76
66

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

rails generateで自動生成されるファイルの設定

Last updated at Posted at 2020-03-08

この記事は

rails generate ...は必要な関連ファイルを自動生成してくれる便利なコマンドですが、「このファイルは不要だな」というものがあった場合、生成する度に削除していては手間がかかります。

そこで、自動生成するファイルを設定する(不要なファイルは生成しない)方法について書いています。

参考までに環境はこちら。

  • Ruby 2.5.7
  • Rails 5.2.3

generateコマンドで自動生成されるファイル

まず、どのコマンドでどのファイルが自動生成されるかを次の一覧にまとめています。

コマンド名 コントローラ ビュー モデル マイグレーション アセット ルート テスト ヘルパー
scaffold
scaffold_controller × × × ×
controller × ×
model × × × × ×
migration × × × × × ×

application.rbを編集する

設定方法は簡単で、application.rbに設定を書き込めばOKです。

例えば何も設定せず次のコマンドを打った場合、

rails g controller StaticPages home

次のファイルが生成されます。

      create  app/controllers/static_pages_controller.rb
       route  get 'static_pages/home'
      invoke  erb
      create    app/views/static_pages
      create    app/views/static_pages/home.html.erb
      invoke  test_unit
      create    test/controllers/static_pages_controller_test.rb
      invoke  helper
      create    app/helpers/static_pages_helper.rb
      invoke    test_unit
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/static_pages.coffee
      invoke    scss
      create      app/assets/stylesheets/static_pages.scss

ここで、以下のファイルが不要だと思ったとします。

  • CSS, JavaScriptファイル
  • testファイル

その場合、次のように設定します。

module XXX
  class Application < Rails::Application
    config.load_defaults 5.2

    config.generators do |g|  # ここから追記
      g.assets false          # CSS, JavaScriptファイル生成せず
      g.skip_routes false     # trueならroutes.rb変更せず、falseなら通常通り変更
      g.test_framework false  # testファイル生成せず
    end                       # ここまで
  end
end

ちなみにg.assetsは、g.javascriptsg.stylesheetsに分けて記述することもできます。

この状態で再度rails generate ...を行うと、次のように生成されるファイルが減っていることがわかります。

      create  app/controllers/static_pages_controller.rb
       route  get 'static_pages/home'
      invoke  erb
      create    app/views/static_pages
      create    app/views/static_pages/home.html.erb
      invoke  helper
      create    app/helpers/static_pages_helper.rb

だいぶスッキリしましたね。

またテストフレームワークにRSpecを使うという場合は、次のように設定できます。

module XXX
  class Application < Rails::Application
    config.load_defaults 5.2

    config.generators do |g|
      g.assets false
      g.skip_routes false
      g.test_framework :rspec,    # RSpecを使用
        controller_specs: false,  # controller specは作らない
        view_specs: false,        # view specは作らない
        helper_specs: false,      # helper specは作らない
        routing_specs: false      # routing specは作らない
    end
  end
end

これらの設定をうまく活用し、効率的にアプリ開発を進めてみてください。

以上です。

76
66
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
76
66

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?