Rails-2.1移行記(まだ途中⇒完了!)
このブログシステムをRails-2.0.
- benchmark_
for_rails でエラーが出るようになったので、 最新版 をGitHubからもってくる。 1 % ./script/p
lugin install git://gith ub.com/cai nlevy/benc hmarkforra ils.git ActiveSupp
ortでエラーが発生。 wrong number of arguments (0 for 1) /usr/local
/lib/ruby/ gems/1.8/g ems/active support-2. 1.0/lib/ac tive_suppo rt/depende ncies.rb:3 01:in `desc' ソースを見てみると、
1 def will_unloa
d?(const_desc ) 2 autoloaded ?(desc) || 3 explicitly _unloadabl e_constant s.include?(to_constan t_name(const_desc )) 4 end これはおかしい。調べてみたらバグっぽい。benchmark_
for_railsプラグインの lib/benchm
のL39を以下のように修正。ark_for_ra ils/rewatc hing.rb 1 #rescue NameError 2 rescue Exception
プラグイン側ですでに対処されていたのだけれど、 発生する例外のタイプが変わった為にうまく動いてなかったようですね。- テストの実行中に
TypeError:
が発生したので調査。 このへん の問題らしい。パッチを発見。 rails:freecan't convert String into Integer ze:gemsしてパッチを当ててみたが、解決せず。 - その後調べてみると、どうやらacts_as_se
archableのDirtyチェック用コードがRailsの仕組みとコンフリクトしてるのが原因のようでした。 (See Rails2.1でacts_as_se archable)
- その後調べてみると、どうやらacts_as_se
ActionView
というエラーが出る。::Template Error: undefined method `stringify_ keys\' for ... - これは自作のHash#sliceが干渉していた模様。Railsで採用されたほうのHash#sliceにインターフェイスをあわせる。
hash.slice
とすればOk..values
- これは自作のHash#sliceが干渉していた模様。Railsで採用されたほうのHash#sliceにインターフェイスをあわせる。
- Viewのテストで
undefined method `cache_erb_
というエラーが出る。 cacue_fuのなかでfragment' @controller
が呼ばれているところでエラーが発生しているようだ。.cache_erb _fragment - Cache関係の自前拡張の影響していたようなので除去。
ここまでで全テストがGreenに。 一通り動作検証をしたのち、Deploy完了。とりあえず問題なく動いているように見えます。