20th Sun
Rails-2.1移行記(まだ途中⇒完了!)
このブログシステムをRails-2.0.2からRails-2.1に移行する作業をしています。
このエントリはその作業ログです。
- benchmark_for_rails でエラーが出るようになったので、
最新版
をGitHubからもってくる。
pre>>
% ./script/plugin install git://github.com/cainlevy/benchmarkforrails.git
<<-- - ActiveSupportでエラーが発生。
wrong number of arguments (0 for 1)
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:301:in `desc'
ソースを見てみると、
ruby>>
def will_unload?(const_desc)
autoloaded?(desc) ||
explicitly_unloadable_constants.include?(to_constant_name(const_desc))
end
<<--
これはおかしい。調べてみたらバグっぽい。
benchmark_for_railsプラグインのlib/benchmark_for_rails/rewatching.rbのL39を以下のように修正。
ruby>>
#rescue NameError
rescue Exception
<<--
プラグイン側ですでに対処されていたのだけれど、
発生する例外のタイプが変わった為にうまく動いてなかったようですね。
- テストの実行中に
TypeError: can't convert String into Integerが発生したので調査。
このへん
の問題らしい。パッチを発見。
rails:freeze:gemsしてパッチを当ててみたが、解決せず。- その後調べてみると、どうやらacts_as_searchableのDirtyチェック用コードがRailsの仕組みとコンフリクトしてるのが原因のようでした。
(See Rails2.1でacts_as_searchable)
- その後調べてみると、どうやらacts_as_searchableのDirtyチェック用コードがRailsの仕組みとコンフリクトしてるのが原因のようでした。
ActionView::TemplateError: undefined method \stringify_keys' for ...`というエラーが出る。- これは自作のHash#sliceが干渉していた模様。Railsで採用されたほうのHash#sliceにインターフェイスをあわせる。
hash.slice.valuesとすればOk.
- これは自作のHash#sliceが干渉していた模様。Railsで採用されたほうのHash#sliceにインターフェイスをあわせる。
- Viewのテストで
undefined method \cache_erb_fragment'というエラーが出る。 cacue_fuのなかで@controller.cache_erb_fragment`が呼ばれているところでエラーが発生しているようだ。- Cache関係の自前拡張の影響していたようなので除去。
ここまでで全テストがGreenに。
一通り動作検証をしたのち、Deploy完了。とりあえず問題なく動いているように見えます。
posted by
genki on Sun 20 Jul 2008 at 20:56 with 0 comments