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 のバージョンアップで解決。

1.2.xアプリからの移行の手順例

フレームワーク

  • 同名のプロジェクトを Rails 2.0.x で rails xxx で作る
  • environment.rb を、アプリの加工部分は活かして移植
  • rake rails:update を実行 → boot.rb と javascript が更新される
  • envrionment/ 以下のファイルを、アプリの加工部分は活かして移植
  • application.rb を、アプリの加工部分は活かして移植
  • script/ 以下を更新
Last modified:2020/06/12 18:49:09
Keyword(s):
References:[Ruby on Rails]