Rails newでRailsプロジェクトを作ったらconfig.generatorsを設定しよう


久しぶりのブログ更新です!仕事で忙しくて更新が全然できてませんでした(;´Д`)

さて、相変わらずRailsの仕事をこなしているのですが、Rails newしたときのgeneratorの設定をする機会があったので、ノウハウを記事としてまとめておきます。

config.generatorsの設定が必要な理由とは?

Rails開発を行うときに、Scaffolding機能は避けては通れない、むしろ積極的に使っていきたい便利な機能です。

ところが、自動生成されるファイルがプロジェクトの構成とあっておらず、自動生成後に必要なファイルだけ残してほかは消さなければならない…となると面倒ですよね。

最近のプロジェクト構成では、Rails newしたアーキテクチャをそのまま使うことは少なくなってきていて、例えばCoffeeScriptを採用しない、テストはRSpecにする、などのカスタマイズをして運用をするケースが増えています。

そのカスタマイズに合わせたScaffoldが出来れば、Railsの開発効率を下げることなく、必要な部分の実装に取り掛かることができます。

具体的な設定項目を見てみましょう

Railsプロジェクトデフォルトでは、設定は以下のようになっています。


config.generators do |g|
  g.orm             :active_record
  g.template_engine :erb
  g.test_framework  :test_unit, fixture: true
end

ormにActiveRecordを使用、テンプレートエンジンはerb、テストフレームワークはtest_unitを使っていることがわかりますね。

私のRailsプロジェクトでは以下のような構成になっています。

  1. ORMはActiveRecordを使用
  2. テンプレートエンジンはSlimを使用
  3. テストフレームワークはRSpecを使用
  4. CoffeeScriptを使わず、jsも自動生成しない
  5. SCSSを自動生成しない

このような構成にしたいと思ったら、以下のようにApplicaction.rbに記述を追加しましょう。

config.generators do |g|
  g.orm             :active_record
  g.template_engine :slim
  g.test_framework  :rspec, fixture: false
  g.stylesheets     false
  g.javascripts     false
end

これで、プロジェクトにあわせてガンガンScaffoldができるようになりました。

参考

Creating and Customizing Rails Generators & Templates