미래 지향적인 웹 앱 구축: The Codest의 전문가 팀이 제공하는 인사이트
The Codest가 최첨단 기술로 확장 가능한 대화형 웹 애플리케이션을 제작하고 모든 플랫폼에서 원활한 사용자 경험을 제공하는 데 탁월한 성능을 발휘하는 방법을 알아보세요. Adobe의 전문성이 어떻게 디지털 혁신과 비즈니스를 촉진하는지 알아보세요...
MVC는 애플리케이션의 책임을 분담하여 더 쉽게 이동할 수 있도록 하는 디자인 패턴입니다. Rails는 관례적으로 이 디자인 패턴을 따릅니다.
저는 다음과 같이 작업하는 것을 좋아합니다. 레일 작동하는 애플리케이션을 쉽고 빠르게 만들어 전 세계 또는 친구들에게 보여줄 수 있기 때문입니다. 그러나 다음과 같이 큰 프레임워크가 필요하지 않은 애플리케이션 유형도 있습니다. 레일 및 모든 기능.
전체 MVC 패턴 중 M(모델)만 필요한 애플리케이션이 있을 수 있습니다. 모델-컨트롤러. 를 시작할 가치가 있습니까? 프로젝트 in 레일 V-C(뷰-컨트롤러) 부분이 필요하지 않다는 것을 알고 있다면?
다음 사항을 알아두면 좋습니다. 활성 레코드 MVC를 담당하는 액티브 모델, 액션 팩 및 액션 뷰는 외부에서 독립적으로 사용할 수 있습니다. 레일. 이를 통해 간단한 루비 애플리케이션 데이터베이스에 연결하여 불필요한 코드 및 라이브러리를 패키지로 가져올 수 있도록 rails new 명령을 실행합니다.
이를 달성하는 방법을 단계별로 설명했으며 전체 코드는 GitHub에서 찾을 수 있습니다. 링크는 이 글 하단에 있습니다.
프로젝트를 시작하기 위해 필요한 것은 많지 않습니다. 먼저 보석 파일
에서 애플리케이션에 필요한 보석을 추가하는 데 필요한 버전과 함께 Ruby 를 사용할 것입니다.
고양이 보석 파일
# frozen_string_literal: true
소스 'https://rubygems.org'
루비 '2.7.2'
선택 사항 README.md
파일은 우리 애플리케이션의 작동 방식과 향후 프로젝트를 함께 개발할 다른 개발자를 위해 애플리케이션을 계속 개발하는 방법을 설명하는 것입니다.
cat README.md
# 애플리케이션
할 일: 이 텍스트와 위의 텍스트를 삭제하고 앱을 설명합니다.
앱
디렉토리에 application.rb
파일은 애플리케이션에 추가할 라이브러리와 파일을 구성하고 로드하는 역할을 합니다. 실행하는 것을 잊지 마세요. 번들 설치
를 생성하여 Gemfile.lock
. 이 단계에서 애플리케이션의 구조는 다음과 같아야 합니다:
트리
.
├── Gemfile
├── Gemfile.lock
├── README.md
└── app
└── application.rb
이러한 구조가 준비되면 어떤 데이터베이스 엔진을 선택하고 구성할지 고려할 수 있습니다. 이 글에서는 제가 가장 많은 경험을 가지고 있는 PostgresQL을 선택했습니다. MySQL이나 SQlite3 또는 다른 엔진도 사용할 수 있습니다. 활성 레코드. 기술을 선택할 때는 애플리케이션의 목적, 사용 용도 및 목적에 따라 안내를 받는 것이 좋습니다.
빠르고 간단한 데이터베이스 구성을 위해 저는 docker와 docker-compose를 사용했습니다. 이러한 도구의 구성과 장단점에 대해 자세히 설명하고 싶지는 않지만, 도커를 사용해 본 적이 없다면 다음 공식 문서를 참조하시기 바랍니다. Docker 그리고 도커 컴포즈 에서 자세한 내용을 확인하세요.
# docker-compose.yml
버전: '3.7'
서비스
postgresql:
이미지: postgres:12.0-alpine
포트
- 5432:5432
환경:
- PGDATA=/postgresql
- POSTGRESPASSWORD=postgres
- POSTGRESUSER=postgres
볼륨
- DB-볼륨:/postgresql
volumes:
db-volume:
또한 보석 파일
gem 'pg'
그리고 우리의 application.rb
파일
# 앱/응용 프로그램.rb
require 'pg'
모듈 애플리케이션
클래스 Error < StandardError; 끝
# 코드가 여기로 이동합니다...
end
애플리케이션 구성의 다음 단계는 애플리케이션에 스탠드얼론_마이그레이션
그리고 레이크
gems를 추가하면 Rails에서와 마찬가지로 마이그레이션을 관리하고 rake db: 명령에 액세스할 수 있습니다.
보석 파일
필요한 보석으로 번들 설치
비레일 및 비루비 애플리케이션에 사용되는 # 보석
gem '스탠드얼론_마이그레이션'
# standalone_migrations는 Rails에서와 같이 마이그레이션을 생성하고 실행할 수 있도록 rake가 필요합니다.
gem 'rake'
환경 변수를 로드하는 데 # 젬 필요
gem 'dotenv'
레이크파일
를 루트 디렉토리에 있는 프로젝트에 추가하여 dotenv
그리고 스탠드얼론_마이그레이션
이전에 추가한 # frozen_string_literal: true
'dotenv' 필요
Dotenv.load
require 'standalone_migrations'
스탠드얼론 마이그레이션::태스크.로드_태스크
와 함께 레이크파일
이 방법으로 구성하면 레이크
를 사용하여 작동하고 있습니다. rake -T
명령을 실행하면 애플리케이션에서 사용 가능한 명령 목록을 반환합니다.
레이크 DB:생성
를 사용하더라도 프로젝트에 Postgres 인스턴스에 연결하기 위한 구성 파일이 있어야 합니다. 이를 위해서는 db 디렉터리와 함께 config.yml
파일을 생성합니다:# db/config.yml
기본값: &기본값
어댑터: postgresql
인코딩: 유니코드
pool:
데이터베이스:
사용자 이름
password:
host:
port:
개발:
<<: *default
테스트:
<<: *기본값
스테이징:
<<: *기본값
프로덕션:
<<: *기본값
보시다시피, 환경 변수를 사용하여 저장소에 있어서는 안 되는 민감한 데이터를 보관할 Postgres에 대한 연결을 구성했습니다. 이를 위해 이전에 추가한 보석 도트엔브이
에도 추가되었으며, 이는 레이크파일
와 함께 스탠드얼론_마이그레이션
. Git을 사용하여 애플리케이션의 버전 관리를 관리하는 경우, 애플리케이션의 버전 관리를 관리하기 위해 .gitignore
파일에서 추적 가능성을 비활성화합니다. .env
파일을 프로젝트에서 삭제합니다.
# .gitignore
.env*
!.env.example
를 추가하고.env
파일에 올바르게 구성된 환경이 포함된
# .env
DATABASE_NAME="개발"
DATABASE_USER="postgres"
DATABASE_PASSWORD="postgres"
DATABASE_HOST="localhost"
DATABASE_PORT="5432"
이 단계에서는 다음을 실행할 수 있어야 합니다. 레이크 DB:생성
명령으로 데이터베이스를 생성합니다.
다음을 통해 새 마이그레이션을 추가해 보겠습니다. rake db:new_migration name=
를 생성하여 게시물
테이블이 있는 :title
열
# frozen_string_literal: true
CreatePosts < ActiveRecord::Migration[6.0] 클래스
def change
create_table :posts do |t|
t.string :title
end
end
끝
다음과 같이 db/migrate
디렉토리가 자동으로 추가되고 schema.rb
마이그레이션이 성공적으로 완료된 후 생성되었습니다. 현재 프로젝트 구조는 다음과 같습니다:
tree
.
├── Gemfile
├── Gemfile.lock
├── README.md
├── 레이크파일
├── .gitignore
├── .env.example
├── app
│ └── application.rb
├── db
│ ├── config.yml
│ ├── 마이그레이션
│ │ └── 20210504135128_create_posts.rb
│ └── schema.rb
└── docker-compose.yml
마지막으로 애플리케이션을 만드는 또 다른 단계는 다음을 추가하는 것입니다. 액티버코드
및 그 구성. 이를 위해서는 젬 파일에 3개의 젬을 더 업데이트해야 합니다:
gem '액티버레코드'
gem 'erb'
gem 'yaml'
추가하는 이유 erb
그리고 ymal
에 대한 설명은 아래 댓글에서 확인할 수 있습니다. 전체 active_record
구성은 앱/애플리케이션.rb
파일을 만듭니다.
여기서 어떤 일이 일어나는지 하나씩 살펴보겠습니다:
# frozen_string_literal: true
# 다른 환경에서 애플리케이션을 실행할 수 있도록 하려는 경우,
# 테스트 또는 프로덕션과 같은 다른 환경에서 애플리케이션을 실행하려면 처음에 환경 변수에서 가져온
#를 설정하는 것이 좋으며, 이는 환경 변수에서 가져온 것입니다.
# 또는 기본적으로 `개발`로 설정하는 것이 좋습니다.
ENV['ENVIRONMENT'] ||= 'development'
# 추가된 젬을 사용하려면 Kernel#require 메서드를 사용하여 로드해야 합니다,
#는 매개변수로 전달된 파일 또는 라이브러리를 로드합니다.
require 'pg'
require 'active_record'
require 'dotenv'
require 'yaml'
require 'erb'
# 기본적으로 환경 변수를 로드하기 위한 Dotenv.load는 '.
#를 '.env' 파일에 전달하므로 다른 환경을 사용하려면
#는 이를 아래 방법으로 확장하여 먼저 세트 개발을 위해 다음과 같이 합니다.
# 환경에서는 '.env.development.local'로 끝나는 파일을 찾습니다,
#, '.env.development', 마지막으로 '.env'로 끝나는 파일을 찾습니다.
Dotenv.load(".env.#{ENV.fetch('환경')}.local", ".env.#{ENV.fetch('환경')}", '.env')
# 데이터베이스 설정을 로드하는 데 필요한 메서드
def db_configuration
# 아래 메서드는 설정이 있는 파일의 경로를 반환합니다.
db_configuration_file_path = File.join(File.expand_path('..', __dir__), 'db', 'config.yml')
# 파일 경로를 알면 해당 값을 읽을 수 있습니다. config.yml
# 파일에는 환경 변수가 포함되어 있으며, 눈치 채셨겠지만,
#는 erb 구문을 사용하므로 erb gem도 사용해야 합니다. 이것이 없으면
# 변수 값을 올바르게 읽지 못하고 액티버코드
#가 postgres에 연결할 수 없으며 다음 메서드가 반환됩니다.
# 구성을 문자열로 반환합니다.
db_configuration_result = ERB.new(File.read(db_configuration_file_path)).result
# 이전에 추가한 `yaml` 젬을 사용하여 구성을 안전하게 로드할 수 있습니다.
YAML.safe_load(db_configuration_result, 별칭: true)
end
# 마지막으로, 액티버레코드와 포스트그레스 사이의 연결을 생성해야 합니다.
#를 `establish_connection` 메서드를 사용하여 연결합니다.
ActiveRecord::Base.establish_connection(db_configuration[ENV['ENVIRONMENT']])
모듈 Application
class Error < StandardError; end
# 코드가 여기...
end
이미 구성이 완료되었으므로 포스트 모델에 ruby 앱으로 이동합니다.
`├── 앱`
`│ └── 모델`
`│ └── post.rb`
app/models/post.rb
# frozen_string_literal: true
class Post < ActiveRecord::Base;end
에 파일을 로드하는 것을 잊지 마십시오. application.rb
'앱/모델/포스트' 요구
또한 요구 사항을 추가하는 것을 잊지 마십시오. 'app/runner'
에 앱/애플리케이션.rb
애플리케이션, 서비스, 더 많은 모델에 새 파일을 추가하려면 다음에서 로드해야 합니다. application.rb
.
현재 루비 애플리케이션은 계속 사용할 준비가 되었습니다. 구성을 완료했습니다:
보시다시피, 항상 다음을 사용할 필요는 없습니다. 새로운 레일
. 이렇게 하면 애플리케이션에서 사용되지 않는 불필요한 코드를 피할 수 있습니다. 애플리케이션 개발을 더 잘 제어할 수 있습니다. 시간이 지나면서 더 많은 라이브러리와 비즈니스 로직을 추가할 수 있습니다. 이렇게 구성된 애플리케이션을 사용하여 크롤러 또는 스크레이퍼를 만들고, 정보를 검색하여 자체 데이터베이스에 저장하거나 파일을 로드하고 흥미로운 정보를 추출할 외부 API에 연결할 수 있습니다. 여러분의 애플리케이션 개발에 행운이 함께 하기를 기원합니다!
애플리케이션도 어떻게든 시작해야 합니다. 예를 들어 터미널에서 여러 가지 방법으로 시작할 수 있습니다. 터미널에서 exe/app
파일에서 애플리케이션 로직을 로드하는 '앱/애플리케이션'
파일을 통해 애플리케이션을 실행하고 러너
서비스를 앱 디렉토리에 추가합니다.
#!/usr/bin/env ruby
# frozen_string_literal: true
'번들러/설정' 필요
$LOAD_PATH.unshift File.expand_path('..', __dir__)
'앱/애플리케이션' 요구
Runner.start
# frozen_string_literal: true
Runner 클래스
def self.start
'시작'을 넣습니다.
end
end
또한 다음을 추가하는 것을 잊지 마십시오. '앱/러너' 필요
에 앱/애플리케이션.rb
코드는 GitHub에서 찾을 수 있습니다:
– https://github.com/dwatek/simpleruby앱
자세히 보기