1

問題は、フィルタと順序を定義するために、RoR ActiveRecord にいくつかのシンタックス シュガーを追加する ruby​​gem があることです。以前は meta_where を使用していましたが、squeel に切り替えて Rails 3 をサポートしました。問題は、ActiveRecord <= 3.0.10 ですべてが正常に機能したことです。gem で 3.1.0 に切り替えようとすると、次のエラーが発生します。

/Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activerecord-3.1.0/lib/active_record/named_scope.rb:194:in `valid_scope_name?': private method `warn' called for nil:NilClass (NoMethodError)

全体のトレースは次のとおりです。

/Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activerecord-3.1.0/lib/active_record/named_scope.rb:194:in `valid_scope_name?': private method `warn' called for nil:NilClass (NoMethodError)
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activerecord-3.1.0/lib/active_record/named_scope.rb:175:in `scope'
    from ./test/simplificator_filter/filterable/filterable_test.rb:12
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:234:in `load'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:234:in `load'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:223:in `load_dependency'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:640:in `new_constants_in'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:223:in `load_dependency'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@filters/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:234:in `load'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@global/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@global/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `each'
    from /Users/admin/.rvm/gems/ree-1.8.7-2011.03@global/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5

レーキが中止されました!

同様のエラーを検索しましたが、何も見つかりませんでした (ほとんどの場合、トレースのペースト)。何が問題なのか知っている人はいますか?

前もって感謝します。乾杯、ネイサン

4

2 に答える 2

1

モデルをリロードするときの動作が変更されました。3.0 は気にしませんが、load 'app/models/post.rb'3.1 はこのエラーをスローします。コンソールでモデルをインタラクティブに調整したい場合は、Object.send :remove_const, 'Post'前にモデルを削除する必要があります。

于 2011-10-13T16:10:22.550 に答える
0

私はそれを修正することができました。

問題はテストスイートにあることが判明しました。この gem は、フィルタと順序を定義するための構文糖衣を追加するものであったため、ActiveRecord に干渉していました。

どうやらそうすると、すべてが機能したことを削除した後、クラスを再評価したり、テストケースで同じ名前のクラスを使用したりするときに問題が発生します。

于 2011-09-22T11:49:57.113 に答える