2010-01-06 4 views
1

Je suis un novice de rails et recevoir le message suivant lorsque je lance un test de râteau. Ceci est une application basée sur le moteur de la communauté rails.Rails test rake renvoie un message d'erreur

J'ai essayé de créer une application de test juste pour m'assurer que mes gemmes etc. sont bien et que je peux exécuter le test de rake avec succès dans cette application.

Ce serait génial si quelqu'un pourrait jeter une lumière sur ce qui se passe mal ...

/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' 

Répondre

1

L'erreur est jamais assez d'informations pour partir de la seule. Cependant, des choses si simples, avez-vous déjà exécuté sudo rake gems:install?

aussi je vois cette ligne ci-dessous

app/controllers/users_controller.rb line 17 

que nous avions besoin de voir votre contrôleur et il ressemble.

aussi ce qui se passe si vous utilisez simplement rake?

+0

gemmes de rake: l'installation a été faite, comme je l'ai mentionné, les tests fonctionnent très bien sur un exemple de projet que j'ai créé il renvoie la même erreur quand je fais juste râteau – eakkas

+0

je voudrais cependant voir ce qui est dans votre contrôleur cependant. – pjammer

0

Je sais que cela a été ouvert pendant un certain temps ....

J'ai sais que C'est pas compatible avec Rails 2.3.5 (plus grand soutien version Rails est 2.3.4). Peut-être que c'est le problème?

0

Il semble que vous essayez d'appeler "fusionner" sur une valeur nulle.

Vous devez inclure la ligne de votre users_controller pour nous faire savoir ce que fait le code à ce moment-là. Il se peut que vous avez quelque chose comme:

params[:widget].merge(some_hash) 

et que vous appelez ce même lorsque params [: un widget] est vide (pas de params ont été envoyés). Si tel est le cas, il vous suffit de le faire:

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

à la ligne 17 de votre contrôleur utilisateur que vous aurez quelque chose comme @ some_variable.do_something

La chose est que @some_variable est une instance (objet) de la classe Nil qui n'a pas de méthode .do_something. Cette ligne de code s'attend à une instance de la classe User très probablement et comme il semble que vous utilisez le plugin de moteur de communauté, je dirais que vous laissez probablement passer quelque chose au contrôleur d'utilisateurs sans un utilisateur valide.

Jetez un coup d'œil sur le contrôleur pour voir ce qu'il attend alors assurez-vous de faire tout ce qui est nécessaire pour lui donner ce dont il a besoin. Avec les informations que vous avez fournies, il n'est malheureusement pas possible de vous donner une idée de ce que vous devez faire pour résoudre le problème.

Questions connexes