はじめに
rails generate ...
は必要な関連ファイルを自動生成してくれる便利なコマンドですが、「このファイルは不要だな」というものがあった場合、生成する度に削除していては手間がかかります。
そこで、自動生成するファイルを設定する(不要なファイルは生成しない)方法について書いています。
参考までに環境はこちら。
- Ruby 2.5.1
- Rails 5.2.4
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.javascripts
とg.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
だいぶスッキリしました。以上。