Rails2.0.1メモ
Module階層化関連
気になっていた問題がほぼ解消された。
- fixture は fixtures 直下にテーブル名で用意する。(Rails 1.2.5 ではサブフォルダ下に入り動作させるためにステップがあった)
- ただし、model を generate すると空のモジュール名ディレクトリも作られる。何に使うのかなこれ?
- テーブル名は module とクラスを _でつないだものにすると楽
- ↑その場合、モデルクラスに set_table_name が必要
- 同じ階層同士のモデル間で関連をはる場合、:class_name は指定しなくてよくなった(Rails 1.2.5 では必要だった)
と思ったら不具合もあった。
- has_many で extension しようとすると例外。どうも、has_many を記述している側のクラスがModuleの下にあるという状況を想定していない不具合っぽい雰囲気。階層化されていないモデル同士なら動くコード。
Migration
- t.timestamp で created_at, updated_at を作ってくれる。Generate すると書いてあるので自分で書かないですむ。
データベース接続
Model をまだ1つも作っていなくても、コントローラをつくってアクセスするとDBがないと怒られる。
... /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.0.1/lib/active_record/query_cache.rb:8:in `cache' /opt/local/lib/ruby/gems/1.8/gems/actionpack-2.0.1/lib/action_controller/caching.rb:677:in `perform_action' ...
GetText で 500 Internal Server Error
が出た。むとう様に情報をいただいて解決。Ruby 1.8.6 p26 より前で出る現象だった。Ruby のバージョンアップで解決。
- http://d.hatena.ne.jp/craccho/20071210
- http://zargony.com/2007/07/29/using-ruby-gettext-with-edge-rails/
1.2.xアプリからの移行の手順例
フレームワーク
- 同名のプロジェクトを Rails 2.0.x で rails xxx で作る
- environment.rb を、アプリの加工部分は活かして移植
- rake rails:update を実行 → boot.rb と javascript が更新される
- envrionment/ 以下のファイルを、アプリの加工部分は活かして移植
- application.rb を、アプリの加工部分は活かして移植
- script/ 以下を更新
Keyword(s):
References:[Ruby on Rails]