2012-05-02 12 views
2

Rails 3.1.0から3.2.3にアップグレードしました。私はRailsの3.1.0で同じコマンドを実行すると、私は何の問題を取得していないRails 3.2 Obj.try()failed

1.9.2p180 :005 > Rails.version 
=> "3.2.3" 
1.9.2p180 :006 > a = 'test' 
=> "test" 
1.9.2p180 :007 > a.try(:banana) 
NoMethodError: undefined method `banana' for "test":String 
    from /Users/jamesthullbery/.rvm/gems/[email protected]_tier/gems/activesupport-3.2.3/lib /active_support/core_ext/object/try.rb:32:in `try' 
    from (irb):7 
    from /Users/jamesthullbery/.rvm/gems/[email protected]_tier/gems/railties-3.2.3/lib/rails /commands/console.rb:47:in `start' 
    from /Users/jamesthullbery/.rvm/gems/[email protected]_tier/gems/railties-3.2.3/lib/rails/commands/console.rb:8:in `start' 
    from /Users/jamesthullbery/.rvm/gems/[email protected]_tier/gems/railties-3.2.3/lib/rails/commands.rb:41:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 
1.9.2p180 :008 > 

1.9.2p180 :004 > Rails.version 
=> "3.1.0" 
1.9.2p180 :005 > a = 'test' 
=> "test" 
1.9.2p180 :006 > a.try(:banana) 
=> nil 
1.9.2p180 :007 > 

を持って、私は私の宝石の依存関係の問題は、私がテストを実行するために管理し、私はこれを発見片付けましたら、誰もこの問題を見た?確かに私の環境には何か問題があり、Railsフレームワークには何の問題もありません。 tryメソッドを正確に検索するのはかなり難しいようですので、まだオンラインで何も見つかりませんでした。他の誰かがこれを見ていますか?ありがとう!

+0

これは既に投稿されています。 http://stackoverflow.com/questions/8697235/rails-3-objecttry-not-working – earlonrails

答えて

3

Object#tryは、nilレシーバを処理することになっています。 NoMethodErrorの例外を回避するために使用するべきではありません。

3.1.0で見た動作はバグで、it was "fixed" 7 months ago(この記事の時点)です。

+0

ありがとうございました!私はちょうどソースコードに潜入していたし、あなたもリンクしてコミットしています。 Railsの更新プログラムの上にとどまることをお勧めします。 – germs12