Ruby on Railsはscaffoldが有名です。rails generate
コマンドによりREST構造のスケルトンを生成できるものです。このジェネレータはscaffold以外にもテンプレートを生成できます。rails g --help
からRails関連のジェネレータを抜粋すると以下のようなリストになります。
Rails:
application_record
assets
channel
controller
generator
helper
integration_test
jbuilder
job
mailbox
mailer
migration
model
resource
scaffold
scaffold_controller
system_test
task
また、ジェネレータのテンプレートをカスタマイズすることで、個別プロジェクトにより適したファイルを生成できます。
テンプレートは、gem付属のファイルがデフォルトですが、プロジェクトのlib/templates/
に対応するファイルを置くと優先的に採用されます。
ベーステンプレートは
railtiesのlib/rails/generators/から探します。先ほどのRailsジェネレータに対応するファイルは、概ねrails/
ディレクトリにあります。scaffoldがscaffold_controllerを参照していたりするため、目的のファイルを探すところから始まります。
たとえば、controllerのテンプレートは
rails/scaffold_controller/templates/controller.rb.ttを、プロジェクトのlib/templates/rails/scaffold_controller/controller.rb.tt
にコピーすることでジェネレータから利用されます。
.erb.tt
という形式は、ThorがパースしたうえでERBレンダリングするものですが、概ねERBです。
なお、テンプレートをオーバーライドすると、Railsのバージョンアップとは乖離していく点には注意が必要です。テンプレートのフォーマットはあまり変化がないものの、メジャーバージョンアップ時には対応する変更点を確認した方が安全です。
Chuma Takahiro