以前、オリジナルのscaffoldジェネレーターを作るのがびっくりするほど簡単なことを知って、次のプロジェクトを始める時には必ずそれ用のscaffoldを作ってから始めようと思ってました。
プラグインの雛形を作る。名前は適当です。(YetAnotherScaffold)
script/generate plugin ya_scaffold
デフォルトのscaffoldをコピる。(下記の場所はDebianの場合)
mkdir -p vendor/plugins/ya_scaffold/generators
cp -r /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails_generator/generators/components/scaffold \
vendor/plugins/ya_scaffold/generators/ya_scaffold
ファイル名とクラス名を変える。
cd vendor/plugins/ya_scaffold/generators/ya_scaffold
mv scaffold_generator.rb ya_scaffold_generator.rb
これだけで同機能、別名のscaffoldジェネレータができる。
script/generate ya_scaffold Foo name:string ...
名前が変わっただけ。
中身を見ると、何を変えたらいいのか一目瞭然なので思う通りに変えられます。ジェネレートされるファイルのテンプレはERBなのでそれを弄るだけでも随分違います。
今回のプロジェクト用に吐かれるHTMLを弄ったり、new, editから共通の_formを使うようにしたり、i18nやpaginate入れたり、scaffold.cssやlayoutを作らないようにしたりと極簡単な変更しかしてないですが、作業の手間はかなり短縮できて嬉しいです。
こんな簡単だったらさっさと試してみればよかった。まことに遺憾です・・・。