2010-01-06 141 views
1

我是Rails新手,在运行Rake测试时收到以下消息。这是一个基于rails社区引擎的应用程序。Rails Rake测试返回错误消息

我试着创建一个测试应用程序只是为了确保我的宝石等都很好,我能够在该应用程序中成功运行耙测试。

这将是巨大的,如果有人能阐明什么错误光...

/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/whiny_nil.rb:52:in `method_missing': undefined method `merge' for nil:NilClass (NoMethodError) 
    from /home/eakkas/NetBeansProjects/hello_ce/vendor/plugins/community_engine/app/controllers/users_controller.rb:17 
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' 
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:158:in `require_without_desert' 
    from /usr/lib/ruby/gems/1.8/gems/desert-0.5.3/lib/desert/ruby/object.rb:8:in `require' 
    from /usr/lib/ruby/gems/1.8/gems/desert-0.5.3/lib/desert/ruby/object.rb:32:in `__each_matching_file' 
    from /usr/lib/ruby/gems/1.8/gems/desert-0.5.3/lib/desert/ruby/object.rb:7:in `require' 
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:265:in `require_or_load' 
    from /usr/lib/ruby/gems/1.8/gems/desert-0.5.3/lib/desert/rails/dependencies.rb:27:in `depend_on' 
    from /usr/lib/ruby/gems/1.8/gems/desert-0.5.3/lib/desert/rails/dependencies.rb:26:in `each' 
    from /usr/lib/ruby/gems/1.8/gems/desert-0.5.3/lib/desert/rails/dependencies.rb:26:in `depend_on' 
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:136:in `require_dependency' 
    from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:414:in `load_application_classes' 
    from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:413:in `each' 
    from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:413:in `load_application_classes' 
    from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:411:in `each' 
    from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:411:in `load_application_classes' 
    from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:197:in `process' 
    from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `send' 
    from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `run' 

回答

1

错误是远远不够的信息熄灭的孤独。然而,如此简单的事情,你是否已经运行sudo rake gems:install

也是我看到下面

app/controllers/users_controller.rb line 17 

此行我们需要看到您的控制器,以及它看起来像。

如果你只是使用rake会发生什么?

+0

rake gems:安装已完成,正如我所提到的,测试运行得很好我创建的示例项目 它返回相同的错误,当我只是耙 – eakkas 2010-01-06 07:24:41

+0

我想看看你的控制器仍然是什么。 – pjammer 2010-01-07 02:34:58

0

我知道这已经开了一段时间....

我知道,CE当前未使用Rails 2.3.5兼容(最大支持Rails的版本是2.3.4)。也许这是问题?

0

它看起来像你试图调用“合并”在零。

您必须在您的users_controller中包含该行,以让我们知道代码在此时正在执行的操作。 这可能是因为你已经得到的东西,如:

params[:widget].merge(some_hash) 

和你调用这个即使PARAMS [:小工具]是空的(即没有PARAMS已发送)。如果是这种情况,那么你只需要做到这一点:

(params[:widget] || {}).merge(some_hash) 
0

在用户控制器的行17,您将有类似@ some_variable.do_something

的事情是,@some_variable是一个实例(对象)称为Nil,它没有.do_something方法。

该行代码最可能会期待User类的实例,因为它看起来像您正在使用社区引擎插件我想说,它很可能是让一些东西通过到用户控制器没有一个有效的用户。

看看控制器,看看它的期望是什么,然后确保你做任何必要的事情来给它它需要的东西。有了你提供的信息,很不幸,你不需要再给出解决问题的线索。