Hyurakuのエンジニア日誌

SE出身Webエンジニアのブログ

rails g によって不要なファイルが生成されるのを防ぎたい。 #10

rails g scaffodのコマンドを実行するとtestやhelperのような余分なファイルが生成されてしまう。

 rails g scaffold book
--<中略>--
      invoke    test_unit
      create      test/controllers/books_controller_test.rb
      invoke    helper
      create      app/helpers/books_helper.rb
--<中略>--
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/books.coffee

どうすれば余分なファイルを生成せずに済むのか調べたところ、 どうやらconfig/application.rbの中身を書き換えればできるようだ。

参考リンク

config.config.generatorsメソッドを活用すればいけそうだ。

config.generatorsメソッドを使用して、Railsで使用されるジェネレータを変更できます。このメソッドはブロックを1つ取ります。

以下使用可能なメソッドを一部抜粋。 - assetsは、scaffoldを生成するかどうかを指定します。デフォルトはtrueです。 - force_pluralは、モデル名を複数形にするかどうかを指定します。デフォルトはfalseです。 - helperはヘルパーを生成するかどうかを指定します。デフォルトはtrueです。 - javascriptsは、生成時にJavaScriptファイルへのフックをオンにするかどうかを指定します。この設定はscaffoldジェネレータの実行中に使用されます。デフォルトはtrueです。 - test_frameworkは、使用するテストフレームワークを指定します。デフォルトはfalseであり、この場合はTest::Unitが使用されます。 - template_engineはビューのテンプレートエンジン(ERBやHamlなど)を指定します。デフォルトは:ERBです。

今回の場合、helperとjavascriptsそしてtest系のファイルを生成したくないので 次のコードを書き込む。

config/application.rb

class Application < Rails::Application
--<ここから書き込み>--
  config.generators do |g|
    g.helper     false
    g.test_framework false
    g.javascripts false
  end

その後再度rails gのコマンドを実行する。

すると不要なファイルを生成せずに済む。