2010-12-29 2 views
0

J'ai un projet Rails 2 que j'essaie de mettre à niveau vers Rails 3, mais je rencontre des problèmes avec bundler.Manque une constante sur la charge .. comment puis-je contourner cela? (Rails :: Plugin :: OpenID)

Lorsque j'exécute "rake", les tests sont très bien exécutés. Mais quand je cours "bundle exec rake" il ne parvient pas à trouver une constante.

L'erreur est la suivante:

/Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/dependencies.rb:131:in `const_missing': uninitialized constant Rails::Plugin::OpenID (NameError) 
    from /Users/kimptoc/Documents/ruby/borisbikes/borisbikestats.pre3/vendor/plugins/open_id_authentication/init.rb:16:in `evaluate_init_rb' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:182:in `call' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:182:in `evaluate_method' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:166:in `call' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:90:in `run' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:90:in `each' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:90:in `send' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:90:in `run' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/activesupport-2.3.9/lib/active_support/callbacks.rb:276:in `run_callbacks' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/actionpack-2.3.9/lib/action_controller/dispatcher.rb:51:in `send' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/actionpack-2.3.9/lib/action_controller/dispatcher.rb:51:in `run_prepare_callbacks' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/rails-2.3.9/lib/initializer.rb:631:in `prepare_dispatcher' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/rails-2.3.9/lib/initializer.rb:185:in `process' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/rails-2.3.9/lib/initializer.rb:113:in `send' 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/rails-2.3.9/lib/initializer.rb:113:in `run' 
    from /Users/kimptoc/Documents/ruby/borisbikes/borisbikestats.pre3/config/environment.rb:9 
    from ./test/test_helper.rb:2:in `require' 
    from ./test/test_helper.rb:2 

Je ces pierres précieuses installé:

$ gem list 

*** LOCAL GEMS *** 

actionmailer (2.3.9) 
actionpack (2.3.9) 
activerecord (2.3.9) 
activeresource (2.3.9) 
activesupport (2.3.9) 
authlogic (2.1.3) 
bundler (1.0.7) 
gravtastic (2.2.0) 
linecache (0.43) 
mocha (0.9.10) 
newrelic_rpm (2.13.4) 
parseexcel (0.5.2) 
rack (1.1.0) 
rack-openid (1.1.1) 
rails (2.3.9) 
rake (0.8.7) 
ruby-debug-base (0.10.5.jb2, 0.10.4) 
ruby-debug-ide (0.4.15) 
ruby-openid (2.1.8, 2.1.7, 2.0.4) 
sqlite3-ruby (1.3.2) 

Le Bundler Gemfile est la suivante:

source 'http://rubygems.org' 

#gem 'rails', '3.0.3' 
gem "rails", "2.3.9" 
gem "activesupport", "2.3.9" 
gem "ruby-openid", "2.1.7", :require => "openid" 
#gem "authlogic-oid", "1.0.4" 

# Bundle edge Rails instead: 
# gem 'rails', :git => 'git://github.com/rails/rails.git' 

gem 'sqlite3-ruby', :require => 'sqlite3' 

gem "authlogic", "= 2.1.3" 
gem "newrelic_rpm" 
# gem "facebooker" 
gem "parseexcel" 
gem 'gravtastic', '= 2.2.0' 
gem "rack-openid", '=1.1.1', :require => 'rack/openid' 

# not sure what this does... 
gem "mocha" 

Je ces plug-ins installés:

2dc_jqgrid  
authlogic_openid  
open_id_authentication 
squirrel 

Je vois ces questions similaires:

Missing a constant on load.. how can i get around this?

et

Requiring gem in Rails 3 Controller failing with "Constant Missing"

Mais leurs solutions ne semblent travailler pour ma situation.

Je suppose que le problème est autour des plugins, mais mon ruby-fu est trop faible.

MISE À JOUR

Se rapprocher, je pense.

On dirait que l'utilisation de la version du plugin de authlogic_openid n'est pas la route actuelle - alors, vous avez changé pour utiliser la gemme authlogic-oid. Aussi semblait avoir une version ancienne/différente de open_id_authentication - donc mis à jour cela.

Maintenant l'exception/trace de la pile est la suivante:

/Users/kimptoc/.rvm/gems/[email protected]/gems/activerecord-2.3.9/lib/active_record/base.rb:1998:in `method_missing': undefined method `openid_required_fields=' for #<Class:0x1036cccb8> (NoMethodError) 
    from /Users/kimptoc/Documents/ruby/borisbikes/borisbikestats.pre3/app/models/user.rb:21 
    from /Users/kimptoc/.rvm/gems/[email protected]/gems/authlogic-2.1.6/lib/authlogic/acts_as_authentic/base.rb:33:in `acts_as_authentic' 
    from /Users/kimptoc/Documents/ruby/borisbikes/borisbikestats.pre3/app/models/user.rb:16 

L'utilisation de ces pierres précieuses maintenant:

authlogic (2.1.6) 
authlogic-oid (1.0.4) 
rack-openid (1.2.0) 
ruby-openid (2.1.8) 

On dirait un problème avec authlogic-oid pas chargé/init'd .. . mon Gemfile ressemble à ceci:

gem "ruby-openid", :require => "openid" 
gem "authlogic-oid", :require => "authlogic_openid" 
gem "authlogic" 
gem "rack-openid", :require => 'rack/openid' 

en outre, l'application/stuff de connexion OpenID est maintenant ne fonctionne pas - je suppose que je nee d jouer avec ces versions de ces pierres précieuses des plus ...

Merci à l'avance, Chris

Répondre

1

(Intéressant nom du projet!)

Je pense que de la trace de la pile que le plug-in open_id_authentication est pas compatible avec Rails 2, et nécessitera Rails 3 pour fonctionner.Si vous effectuez une mise à niveau vers Rails 3, j'utiliserais le projet au point où vous utilisez les nouvelles versions d'Active * et de Rails avant de tenter une correction pour un seul plugin.

+0

Je serais d'accord, mais je pense que vous avez eu vos versions de Rails dans le mauvais sens. Par l'apparence des choses, il n'est pas compatible avec Rails * THREE * et était compatible avec * TWO *. –

+0

Hmm - mais vous n'avez pas encore de Rails 3 dans la pile - vous utilisez Rails 2.3.9. Cela ressemble à une incompatibilité gem dans ce cas - si rake spec fonctionne et que bundle rake spec échoue, alors je pense que vous devez passer en revue toutes les gemmes de votre système, les comparer aux versions que bundler place dans le répertoire .gems et 'épingler' les numéros de version dans votre application. Par exemple. 'gem 'rack', '= 1.1.0''. Vous obtenez probablement une version plus récente d'une gemme que celle dont vous avez besoin, donc elle échoue. – stef

+0

Merci pour les idées - stef est correct, toujours sur rails2 dans cette branche du code - voir si la résolution des problèmes bundler m'aider dans ma branche rails3. Je ai essayé de remixer le plugin open_id_auth et cela a résolu le problème - mais je pense que j'en ai besoin pour mes informations de connexion :(Il semble que j'ai cassé mon autorisation openid pour le moment - peut-être réparer cela aidera. –

Questions connexes