RailsのScaffoldをカスタマイズする方法

March 13, 2020

Rails は様々なジェネレーターを利用することができます。利用できるジェネレーターのリストはrails generateで確認することができます。 ジェネレータの一つであるscaffoldをカスタマイズして、不要なファイルを生成しないようにします。

Settings

generators 用の initializers ファイルを作成します。config/initializers配下の.rbのファイルは自動的に読み込まれます。

touch config/initializers/generators.rb
config/initializers/generators.rb
Rails.application.config.generators do |g|
  g.helper false
  g.javascripts false
  g.resource_route false
  g.stylesheets false
  g.scaffold_stylesheet false
  g.system_tests nil
  g.test_framework :rspec
  g.template_engine :slim
  g.channel assets: false
end

※ test_framework は rspec, template_engine は slim を利用しています。導入方法は以下をご覧ください。

Option

Optiondefault意味
assetstruescaffold 時に生成するかどうか
force_pluralfalseモデル名を複数形にするかどうか
helpertruehelper を生成するかどうか
integration_tool:test_unit結合テストの生成に使う統合ツール
system_tests:test_unitシステムテスト生成に用いる統合ツール
ormfalseOR マッパーを指定。false の場合は Active Record
resource_controller:controllerrails generate resource の実行時にどのジェネレータでコントローラを生成するか
resource_routetrueリソースのルーティング定義を生成すべきかどうか
scaffold_controller:scaffold_controllerrails generate scaffold の実行時にどのジェネレータでコントローラを生成するか
stylesheetsfalseスタイルシートのフックを行なうかどうか
stylesheet_engine:cssアセット生成時に使われる、sass などのスタイルシートエンジンを指定
scaffold_stylesheetfalsescaffold.css を作成するかどうか
test_frameworkfalse利用するテストフレームワーク。false の場合は Minitest
template_engine:erbビューのテンプレートエンジンを指定

Refs