このブログシステムをRails-2.0.2からRails-2.1に移行する作業をしています。 このエントリはその作業ログです。

  • benchmark_for_rails でエラーが出るようになったので、 最新版 をGitHubからもってくる。
       1  % ./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'

    ソースを見てみると、

       1    def will_unload?(const_desc)
       2      autoloaded?(desc) ||
       3        explicitly_unloadable_constants.include?(to_constant_name(const_desc))
       4    end
    
    これはおかしい。調べてみたらバグっぽい。

    benchmark_for_railsプラグインのlib/benchmark_for_rails/rewatching.rbのL39を以下のように修正。

       1  #rescue NameError
       2  rescue Exception
    
    プラグイン側ですでに対処されていたのだけれど、 発生する例外のタイプが変わった為にうまく動いてなかったようですね。

  • テストの実行中にTypeError: can't convert String into Integerが発生したので調査。 このへん の問題らしい。パッチを発見。 rails:freeze:gemsしてパッチを当ててみたが、解決せず。

    • その後調べてみると、どうやらacts_as_searchableのDirtyチェック用コードがRailsの仕組みとコンフリクトしてるのが原因のようでした。 (See Rails2.1でacts_as_searchable)
  • ActionView::TemplateError: undefined method `stringify_keys\' for ...というエラーが出る。
    • これは自作のHash#sliceが干渉していた模様。Railsで採用されたほうのHash#sliceにインターフェイスをあわせる。 hash.slice.valuesとすればOk.
  • Viewのテストでundefined method `cache_erb_fragment'というエラーが出る。 cacue_fuのなかで@controller.cache_erb_fragmentが呼ばれているところでエラーが発生しているようだ。
    • Cache関係の自前拡張の影響していたようなので除去。

ここまでで全テストがGreenに。 一通り動作検証をしたのち、Deploy完了。とりあえず問題なく動いているように見えます。

updated by Png genki on Sun 20 Jul 2008 at 20:56

Search Words:

  • rails21 method15 undefined12 actionview::templateerror8 2.17 of7 arguments7 wrong7 number7 for5 `stringify_keys!'5 can't convert string into integer4 acts_as_searchable4 redmine3 stringify_keys!3 convert3 stringify_keys3 (13 2.03 (undefined3 `cache_erb_fragment'3 can't3 ruby3 into3 string3 1)2 `login'2 nameerror2 0)2 `acts_as_searchable'2 以降1 include1 typeerror1 nil1 テスト1 バグ1 (81 rjs1 エラー1 db1 `stringify_keys1 controller1 例外1 in1 actionview1 active_support1 2.1.21 移行1 2)1 activesupport1 rails2.11 openid1 edge1 typerror1 load_missing_constant1 templateerror1 (21 hash1 integer1 `stringify_keys!1 原因1

Comments:

or Preview
Tags
rails memo
Social Bookmarks
  • Delicious
  • B_entry676
  • Clip_16_12_w676