LoginSignup
3
1

More than 3 years have passed since last update.

rails generate controllerした時に不要なファイルを出さない設定(RSpec編)

Last updated at Posted at 2020-09-13

Ruby on Railsで新しくコントローラーを作る時に、不要なファイルを出さない様に設定をいれるか、オプションを指定する方法です。

システム環境

環境に依存する話ではないと思いますが、私の環境は以下の通りです。

  • Ruby 2.6.3
  • Rails 6.0.3.3
  • RSpec 3.9

Before:設定がない時

デフォルトの状態でrails g controller hogesすると、以下の様なファイルが生成されます。昔はcontroller specも生成された気がしますが、controller specは公式が推奨していないので、今は出ないみたいです。

$ rails g controller Hoges new
      create  app/controllers/samples_controller.rb
       route  get 'samples/new'
      invoke  erb
      create    app/views/samples
      create    app/views/samples/new.html.erb
      invoke  rspec
      create    spec/requests/samples_request_spec.rb
      create    spec/views/samples
      create    spec/views/samples/new.html.erb_spec.rb
      invoke  helper
      create    app/helpers/samples_helper.rb
      invoke    rspec
      create      spec/helpers/samples_helper_spec.rb
      invoke  assets
      invoke    scss
      create      app/assets/stylesheets/samples.scss

でも、「controllerごとにcssを分けないよね」とか「Helperも使わないよね」ということもあるんじゃないでしょうか(←私)。

生成したファイルを手動で毎回消すのが面倒なので、設定を入れることにします。

※不要なファイルは、後から他の人が見た時に分かりづらくなるので、消しておいた方が良いです。

設定の方法

RSpecをテストフレームワークに設定している方はすでにconfig/application.rbconfig.generators doの記載があると思いますので、その前後に以下の様に記述を足します。

config/application.rb
config.generators do |g|
      g.skip_routes true #routesの自動記述をoff
      g.helper false #app/helperの自動生成をoff
      g.assets false #同名のcssやjsの生成をoff
      g.test_framework :rspec, #標準のテストをRSpecに変更
      controller_specs: false, #公式で非推奨のためoff
            view_specs: false, #Request/Systemで代替するのでoff
         routing_specs: false #使用頻度低いのでoff
end

skip_routesは結局resouces :hoge, only: :newの様にresourcesで書き換えてしまうことが多いので、デフォルトではオフにしています。
app/hoge_helper.rbも意外と使わないのでオフ。assetsも使用頻度が少ないのでオフ。

After:設定がある時

設定を入れてrails g controller hoges newを実行すると、結果は以下の通りです。

$rails g controller Samples new
      create  app/controllers/samples_controller.rb
      invoke  erb
      create    app/views/samples
      create    app/views/samples/new.html.erb
      invoke  rspec
      create    spec/requests/samples_request_spec.rb

これである程度スッキリしたのではないでしょうか。

ご参考:コマンドのオプションで指定する方法

config/application.rbに記載して設定するのではなく、都度オプションで指定する方法もあります。

$rails g controller samples new --no-assets
Option 省略されるもの
--no-assets app/assets/以下の.js, .cssファイル
--no-helper app/helpers以下のHelperファイル
--no-test-framework Specファイル。上の場合だとrequest specが省略されます
--skip-routes
--skip-template-engine
3
1
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
3
1