Rails의 배터리 포함 접근 방식은 가장 큰 자산 중 하나입니다. 최소한 부분적으로 Rails의 생성기로 인해 애플리케이션을 신속하게 시작하는 것이 다른 어떤 프레임워크도 수월하지 않습니다.
Rails를 어느 정도 사용해 본 적이 있다면 생성기를 접했을 것입니다. 새 애플리케이션을 만들어야 합니까? rails new 실행 . 여러 가지 새로운 모델과 뷰를 스캐폴드해야 합니까? rails generate scaffold을 실행하세요. . 빠르게 시작하거나 작업 흐름을 간소화하는 데 도움이 되는 수십 가지가 더 있습니다.
그러나 때로는 생성기를 사용하는 것만으로는 충분하지 않은 경우가 있습니다. 이러한 명령의 동작을 사용자 정의하거나 직접 생성할 수도 있습니다. 이 기사에서는 생성기에 대해 자세히 살펴보겠습니다. 특히 템플릿을 사용하여 자신만의 맞춤 Rails 애플리케이션을 만드는 방법을 살펴보겠습니다.
시작해 보세요!
레일 생성기란 무엇입니까?
생성기 함수(Python이나 Javascript에서 익숙할 수 있음)와 혼동하지 마십시오. Railsgenerator는 생성에 초점을 맞춘 사용자 정의 Thor 명령입니다.
많은 예가 있습니다. 모델 생성기(rails generate model)에 익숙할 것입니다. ) 새로운 ActiveRecord 모델 생성 또는 마이그레이션 생성기(rails generate migration) ) 새 마이그레이션을 생성하는 데 사용됩니다. rails generate generator도 있습니다 짐작하셨겠지만, 이것은 새로운 생성기를 생성합니다!
생성기는 서로 호출할 수 있습니다(예:rails scaffold). 수많은 다른 생성기를 호출하고 파일 생성 또는 수정, gem 설치, 특정 rake 작업 실행 등의 방법을 제공합니다. 이것이 어떻게 작동하는지 이해하기 위해 간단한 모델 사양 생성기를 만들어 보겠습니다.
Ruby on Rails에서 나만의 생성기 만들기
다음을 실행하세요:
그러면 /lib/generators/model_spec에 여러 개의 새 파일이 생성됩니다. . model_spec_generator.rb를 수정할 수 있습니다 lib/generators/model_spec/ 폴더에 있음 올바른 디렉토리에 모델 사양 파일을 생성하려면:
template 명령은 lib/generators/model_spec/templates에서 템플릿 파일을 찾습니다. 디렉토리 및 renderit을 지정된 위치 — spec/models 디렉토리. 이 명령은 템플릿 파일에 있는 ERB 스타일 변수를 대체합니다.
source_root를 설정하여 , 참조된 템플릿 파일을 찾을 수 있는 위치를 생성기에 알려줍니다. 템플릿model_spec.rb lib/generators/model_spec/templates/ 폴더에 있음 다음과 같이 보일 수 있습니다:
해당 파일을 생성한 후에는 생성기를 실행하여 새 사양 파일을 생성할 수 있습니다.
많은 보석에는 이와 같은 생성기가 함께 제공됩니다. 실제로 우리는 Rspec과 함께 제공되는 생성기의 단순화된 버전을 만들었습니다. FactoryBot에는 공장용 생성기가 있습니다. 더 많은 예가 있습니다.
다양한 보석의 생성기는 우리가 만든 것보다 더 정교합니다. 생성기가 인수를 받도록 만들거나 rails scaffold와 같은 기존 생성기에 연결할 수도 있습니다. . 더 자세히 알아보려면 Rails 생성기 문서를 참조하세요.
따라서 생성기는 기존 애플리케이션의 작업 흐름을 단순화할 수 있는 잠재력을 가지고 있습니다. 하지만 생성기를 사용하여 새 애플리케이션 설정을 맞춤 설정할 수도 있나요?
템플릿을 입력하세요!
Ruby on Rails의 템플릿
이름에서 알 수 있듯이 템플릿은 애플리케이션 설정을 사용자 정의하기 위한 파일입니다. 이전에 논의한 템플릿 파일과 혼동하지 마십시오! 내부적으로는 템플릿 API에서 알 수 있듯이 특정 목적을 가진 생성기일 뿐입니다. 생성기와 정확히 동일하지는 않지만 매우 유사합니다.
기존 템플릿 파일이 있는 경우 다음과 같이 사용할 수 있습니다:
로컬 파일을 지정하는 대신 URL을 지정할 수도 있습니다. 이는 응용 프로그램 템플릿을 공유할 수 있으므로 특히 유용합니다.
rails new를 실행할 때 템플릿 사용에만 국한되지 않습니다. 어느 쪽이든. 이미 앱을 설정했다면 나중에 다음을 실행하여 템플릿을 적용할 수 있습니다.
템플릿은 매우 유용할 수 있습니다. 새 앱을 만들 때마다 동일한 보석 두 개를 자동으로 추가하고 동일한 구성 변경을 수행하고 싶지 않은 사람이 어디 있겠습니까? 자신만의 애플리케이션 템플릿을 만드는 것은 비록 장기적으로 많은 시간을 절약하지는 못하더라도 매우 재미있습니다.
Rails에서 나만의 템플릿 만들기
이제 우리는 생성기와 템플릿을 사용하는 방법에 대해 알게 되었습니다. 일부 설정 단계를 자동화하는 간단한 애플리케이션 템플릿을 만들어 보겠습니다.
Rails 앱을 설정하는 방법은 개인 취향에 따라 다르지만 예를 들면 다음과 같습니다.
- dotenv gem을 설치하세요.
.env.development만들기 개발 환경용 파일입니다.- 환경 변수를 사용하도록 데이터베이스 구성 파일을 조정합니다.
- 선택적으로 Rspec을 설치하고 설정합니다.
로컬 파일을 만들어 보겠습니다 — mytemplate.rb — 그리고 dotenv을 추가하세요. gem 사용 명령을 내리세요.
방금 dotenv gem을 추가했으므로 .env.development도 생성해 보겠습니다. 데이터베이스 구성을 포함할 파일입니다.
create_file를 사용하여 특정 콘텐츠가 포함된 새 파일을 만들 수 있습니다. . 이 메소드는 Thor에서 제공되므로 템플릿이나 생성기 문서에서는 찾을 수 없습니다. file라는 별칭을 발견할 수도 있습니다. . 애플리케이션 템플릿은 Rails::Generators::AppGenerator의 맥락에서 평가됩니다. , 그리고 이것이 바로 file 별칭이 정의되었습니다.
app_name 변수에 rails new의 첫 번째 인수가 포함되어 있습니다. . 이 변수를 사용하면 구성 파일이 생성된 애플리케이션과 일치하는지 확인할 수 있습니다.
다음으로 환경 변수를 사용하여 데이터베이스에 연결해 보겠습니다. config/database.yml 전체를 덮어쓸 수 있습니다. create_file 사용 명령을 사용하지만 대신 inject_into_file를 사용하여 수정해 보겠습니다. .
after과 함께 문자열이나 정규식을 모두 사용할 수 있습니다. 콘텐츠를 삽입할 위치를 지정하는 인수입니다.
물론 이러한 종류의 구성을 사용하는 것은 사용자가 SQLite를 사용하여 애플리케이션을 생성하지 않는 경우에만 의미가 있습니다. options을 사용하여 특정 인수가 있는지 확인할 수 있습니다. 변수. 어떤 옵션을 사용할 수 있는지 알아보려면 Rails 앱 생성기의 소스 코드를 읽어보는 것이 가장 좋습니다.
마지막으로, 사용자가 원할 경우 Rspec을 설치할 수 있도록 허용하겠습니다. 사용자 입력을 받고 대화형 템플릿을 만드는 다양한 방법이 있습니다. yes? 메소드가 사용자에게 확인을 요청합니다:
우리는 이미 gem를 알고 있습니다. 방법이 있지만 generate 그리고 after_bundle 새로운 내용입니다.
앞서 언급했듯이 Rspec은 자체 생성기를 추가하므로 템플릿에서 직접 이러한 생성기(또는 다른 생성기)를 호출할 수 있습니다. 하지만 문제가 있습니다. gem로 지정된 gem입니다. 메서드는 템플릿 끝에만 설치됩니다. generate에 전화 걸기 그러한 gem에서 제공하는 생성기를 사용하면 실패할 수 있습니다. 따라서 해당 명령을 after_bundle를 사용하여 콜백으로 등록해야 합니다. .
참고 :마무리하기 전에 파일 생성 또는 수정에 대해 간단히 말씀드리겠습니다. 우리는 create_file를 사용했습니다. 및 inject_into_file ,하지만 다른 옵션도 많이 있습니다. copy_file을 보게 될 수도 있습니다. 또는 template 다른 템플릿을 읽을 때. 나는 일을 단순하게 유지하기 위해 여기서 언급하지 않았습니다. 더 고급 템플릿을 만들고 싶다면 파일을 처리하는 다른 방법이 있다는 것을 알아야 합니다.
결과:Rails의 최종 템플릿
최종 템플릿은 다음과 같습니다:
다음을 실행하여 이 특정 템플릿을 테스트할 수 있습니다:
또는:
사용자 정의 데이터베이스 구성을 활용합니다.
언급한 대로 이 파일은 GitHub 요점으로 공유하기에 완벽하게 적합합니다. 필요에 맞게 조정하고 업로드한 다음 동료, 친구 및 맞춤형 앱 템플릿에 관심이 있는 모든 사람과 공유하세요 😉.
Rails 생성기 및 템플릿에 대해 자세히 알아보기
말할 필요도 없이 여기서는 단지 표면적인 부분에 불과합니다.
Rails 앱 작성 및 개발에 대한 선호도는 사람마다 다르기 때문에 수많은 생성기와 애플리케이션 템플릿이 있습니다. 특정 사용자 정의에 대한 내용을 읽으면 이에 대해 많은 것을 배울 수 있습니다. 저는 ChrisOliver의 Jumpstart와 RailsBytes를 추천합니다. RailsBytes는 커뮤니티에서 선별한 템플릿 모음입니다.
Thoughtbot의 Suspenders도 있는데, 이는 내가 Rails 생성기와 템플릿을 더 깊이 파고들도록 영감을 주었습니다. 심지어 최신은 아니지만 여전히 영감을 줄 수 있는 나만의 애플리케이션 템플릿인 Schienenzeppelin을 작성하기도 했습니다.
마무리:Ruby on Rails 생성기 및 템플릿 시작하기
이번 포스팅에서는 Rails 생성기의 기본 사항과 사용법에 대해 살펴보았습니다. 우리는 새로운 모델 사양 작성을 단순화하기 위해 자체 생성기를 만들었습니다.
그런 다음 템플릿을 자세히 살펴보고 간단한 템플릿을 만들어 애플리케이션 설정을 사용자 정의하는 방법을 배웠습니다. 이는 약간의 작업이 될 수 있지만 상당한 보람도 있습니다. 자신만의 템플릿을 작성하는 것이 적합하지 않다면 온라인에서 선택할 수 있는 기존 템플릿이 많이 있습니다!
즐거운 템플릿 만드세요!
추신 Ruby Magic 게시물이 보도되는 즉시 읽으려면 Ruby Magic 뉴스레터를 구독하고 단 하나의 게시물도 놓치지 마세요!
한스 외르크 슈네들리츠
객원 저자인 Hans는 오스트리아 비엔나 출신의 Rails 엔지니어입니다. 그는 대부분의 시간을 코딩하거나 코딩에 관한 독서를 하며 보내고 때로는 블로그에 이에 관한 글을 쓰기도 합니다! 그가 스크린 앞에 앉아 있지 않을 때는 아마도 밖에서 산을 오르고 있는 모습을 볼 수 있을 것입니다.
Hans-Jörg Schnedlitz의 모든 기사