【Rails】 앱에 필요한 파일을 일괄 적으로 신규 작성

이 기사 개요



rails new 커멘드로 앱을 신규로 작성한 뒤, 모델, 컨트롤러, 뷰 파일등은 커멘드를 1회 1회 입력해 작성한다고 생각합니다만, 커멘드를 칠 때에 실행 누락이 있거나, 철자 미스가 있다 그리고 무엇보다 귀찮거나 하고 있었습니다.

이 기사에서는 배치 파일을 사용하여 다양한 MVC 파일을 일괄 적으로 만드는 방법에 대해 설명합니다. (검색해도 그다지 정보가 없었기 때문에, 혹시 사도한 방법일지도 모릅니다….)

방법



1. 배치 파일 작성



lib 폴더에 batch 폴더를 만들고 배치 파일을 만듭니다. (파일 예: create_mvc.rb)



2. 배치 파일을 읽을 수 있도록 설정 변경



config/application.rb에 batch 폴더를 읽을 수 있도록 설정을 추가합니다.

config/application.rb

module Portfolio
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 5.2
    # libフォルダ内のファイルを読み込み可にする
    config.paths.add 'lib', eager_load: true

    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration can go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded after loading
    # the framework and any gems in your application.
  end
end


3. 배치 파일에 일괄 실행 명령을 추가

스크립트에서 rails 명령을 실행하려면 system "실행하는 명령"이라는 바람에 쓰면 OK입니다.

lib/batch/create_mvc.rb
class Batch::CreateMvc

  # ファイルの一括作成
  def self.create_file

    system 'rails g model Post'
    system 'rails g model PostFavorite'
    system 'rails g model PostComment'
    system 'rails g model TagMap'
    system 'rails g model Tag'
    system 'rails g model Relationship'
    ・・・以下、作りたいファイル分のコマンドを記載する

  end
end


4. 배치 파일 실행



배치 파일 실행 자체는 명령을 콘솔에 직접 입력하여 수행합니다.

실행 명령: bundle exec rails runner Batch::[배치 파일의 클래스 이름].[실행하고자 하는 메소드 이름]
예: bundle exec rails runner Batch::CreateMvc.create_file

이렇게 하면 배치 파일이 로드되고 파일에 나열된 명령이 위에서부터 순서대로 실행됩니다.
따라서 rails g 명령과 같은 파일 작성 명령을 일괄 처리할 수 있습니다.



배치 파일로 일괄 등록할 수 있으면 무엇이 좋은가?



솔직히이 배치 파일을 만드는 작업 수와 콘솔에 한 번에 한 번 rails g 명령을 입력하는 작업 시간에는 큰 차이가 없습니다.
다만, 아래와 같은 점에서 메리트가 있을까라고 생각하고 있습니다.
  • 실행 명령을 미리 준비하기 위해 사전에 철자 오류 또는 누출을 확인할 수 있습니다
  • 한 번 만든 배치 파일은 향후 새롭게 앱을 만들 때 사용할 수 있습니다

  • 특히 두 번째 이점이 개인적으로는 큰 것이라고 생각합니다.
    어느 앱도 rails g는 반드시 실행한다고 생각하므로, 배치 파일내의 각 커멘드의 파일명만 메인터넌스하면, 보다 적은 공수로 파일 작성을 할 수 있게 되는 것은 아닐까요.

    다만, 본래 배치 파일은 정기적으로 실행하는 처리를 쓰는 것이므로, 이번과 같이 1 어플리에 1번 밖에 사용하지 않는 배치 파일은 그다지 효과가 있다고는 말할 수 없을지도 모릅니다.

    좋은 웹페이지 즐겨찾기