以前、オリジナルの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を作らないようにしたりと極簡単な変更しかしてないですが、作業の手間はかなり短縮できて嬉しいです。

こんな簡単だったらさっさと試してみればよかった。まことに遺憾です・・・。

Comments


Option