【Rails】generate コマンドで生成されるファイルを制限する設定
はじめに
rails generateコマンドはさまざまなファイルを自動生成してくれるとても便利なコマンドですが、「このファイル使わないんだよな〜」または「なんのファイルを生成しているかよくわからない」ってことはありませんか。そこで、今回はgenerateコマンドで生成するファイルを制限する方法について紹介していきます。
まず、generate controllerコマンドの動きを確認してみましょう!!
$ rails generate controller users index Running via Spring preloader in process 61447 create app/controllers/users_controller.rb route get 'users/index' invoke erb create app/views/users create app/views/users/index.html.erb invoke test_unit create test/controllers/users_controller_test.rb invoke helper create app/helpers/users_helper.rb invoke test_unit invoke assets invoke scss create app/assets/stylesheets/users.scss
このように、コントローラー、ヘルパー、テストなどが自動生成されました。
ちなみに主なgenerateコマンドで生成されるファイルのこのようになっています。
コマンド | コントローラ | ビュー | モデル | マイグレーション | アセット | ルート | テスト | ヘルパー |
---|---|---|---|---|---|---|---|---|
scaffold | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
controller | ○ | ○ | × | × | ○ | ○ | ○ | ○ |
model | × | × | ○ | ○ | × | × | ○ | × |
migration | × | × | × | ○ | × | × | ○ | × |
例えば、generate controllerではこの表から分かる通りコントローラ、ビュー、アセット、ルート、テスト、ヘルパーが生成されます。では、本題である生成されるファイルを制限する設定をしていきましょう。
自動生成を制限する設定
設定をするファイルはconfig/application.rbです。今回は、
- アセット
- ルート
- ヘルパー
- テスト
を制限してみましょう。設定はこのようになります。
config/application.rb
class Application < Rails::Application #以下のように、generateコマンド時に生成されるファイルに制限をかける config.generators do |g| g.assets false g.skip_routes true g.helper false g.test_framework false end end
そして、先ほどと同じgenerateコマンドを入力すると、、、
rails d controller users index Running via Spring preloader in process 62848 remove app/controllers/users_controller.rb invoke erb remove app/views/users remove app/views/users/index.html.erb
このように、コントローラとビューのみ自動生成されるようになりました。