スペシャルジェネレータに頼ってみる。

日本語化とテーブルの関連付けまで表現してくれるRailsプラグインのspecialを使わせて頂いた。
早速プラグインをインストールしようと思ったのだが、specialはジェネレータなので、今お試し開発しているsoftwarebook2プロジェクトに追加してしまうと既に標準のscaffoldを実行済なので、あまり宜しくない。新しくsoftwarebook_spプロジェクトを新規作成することにした。データベースは今まで使っていたsoftwarebook2をそのまま利用するつもり。では、早速作業開始。

softwarebook_spプロジェクトの新規作成

  • RadRailsで、Railsナビゲーター タブで右クリックして、新規 >> Rails プロジェクト を選択した。
  • ウィンドウが表示されるので、プロジェクト名softwarebook_spと入力して、終了ボタンを押す。
  • config/database.ymlファイルをsoftwarebook2から内容をコピーして貼り付け。
  • config/environment.rbの1行目に、$KCODE = 'u' を追加する。
  • RadRailsのジェネレーター タブで、以下のコマンドと同等処理を実行する。
script/generate model software
script/generate model keyword
  • app/models/software.rbに以下の1行を追加する。
class Software < ActiveRecord::Base
  belongs_to :keyword
end
  • app/models/keyword.rbに以下の1行を追加する。
class Keyword < ActiveRecord::Base
  has_many :softwares
end

以上で、specialインストール前の準備完了

プラグインのインストール

RadRailsRails プラグイン タブで確認してみたが、例によって、specialはリストに含まれていなかった...。
そこで、ターミナルからコマンドラインでインストールしてみた。以下のスクリプトを実行した。

cd ~/railsapp/softwarebook_sp
script/plugin install http://wota.jp/svn/rails/plugins/branches/stable/special

ディレクトリをsoftwarebook_spへ移動して、script/pluginでインストールを実行すると、以下のメッセージがズラズラッと出てプラグインがインストールされる。(今回はうまくいった!)

+ ./special/CHANGELOG
+ ./special/generators/jamigration/USAGE
+ ./special/generators/jamigration/jamigration_generator.rb
+ ./special/generators/jamigration/templates/migration.rb
...(途中省略)...
+ ./special/init.rb
+ ./special/lib/habtm_migration.rb
+ ./special/lib/hide_field.rb
+ ./special/lib/master_migration.rb
  • RadRailsに戻って、venderフォルダを右クリックして更新を選択すると、今インストールされたspecialがプラグインフォルダの中に反映される。

ジェネレーターの実行

  • RadRailsのジェネレーター タブで、以下のコマンドと同等処理を実行する。
script/generate special -r keyword
      • specialはプルダウンメニューには表示されないので、手入力した。
      • その右側の入力項目に-r keywordを入力して、実行ボタンを押した。

以上で、ひと通りの作業は完了だ。サーバー タブからサーバーを起動して確認してみる。
...ん、すごいな... script/generate specialだけで、テーブル同士の関連付けまで表示することが出来るようになっている!しかもページは必要な部分だけ書き換えて、一覧表示のページで、そのまま編集可能だ。

日本語の設定

  • db/localizedの中の.ymlに対応する日本語を設定するだけでOK。簡単だ!
  • しかし、ジェネレーターで追加されたコードは相当な量で、しかも複雑そうだ。今の自分のレベルでは、全体を理解することは出来ない...。


この複雑さだと、このあと理解して自分流にカスタマイズ出来ないな...。と思っていたところ、プラグインの中身を確認しているとjascaffoldとspecialは分かれていることに気付いた。Subversionを利用して、special実行前の状態に戻して、jascaffoldを実行してみた。(こんな時Subversionで環境を戻せるので、すごく時間の節約)
お、これなら自分がなんとか理解出来そうな複雑さだ。標準のscaffoldの動きにも近い。しばらくjascaffoldで日本語化を進めてみることにした!


以下は参考ページ。感謝です!