2010-08-31 7 views
1

Je tente d'utiliser MongoId d'un script Ruby simple (et non via Rails ou tout autre cadre) et je pense que je suis en cours d'exécution dans certains conflits de dépendance version:MongoId/problème version activesupport

/opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:779:in `report_activate_error': RubyGem version error: activesupport(3.0.0 not >= 2.2.2, < 3.0.pre) (Gem::LoadError) 
    from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:214:in `activate' 
    from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:1082:in `gem' 
    from /opt/local/lib/ruby/gems/1.8/gems/mongoid-1.9.1/lib/mongoid.rb:24 
    from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require' 
    from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require' 
    from ./rubymongo.rb:4 

Mon Rails local a été mis à jour 3.0.0 déjà, et si j'ai lu l'erreur correctement, quelque part il y a une exigence disant que le support actif doit être < 3.0.pre, et 3.0.0 est trop nouveau?

Est-ce parce que Rails 3.0 est tout neuf et peut-être que Mongoid a une option de configuration quelque part avec 3.0.pre défini que je dois mettre à niveau? Où ferais-je cela?

Je l'habitude d'avoir les anciens rails encore installés aussi, mais nous avons eu une autre erreur:

/opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:233:in `activate': can't activate activesupport (>= 2.2.2, < 3.0.pre, runtime) for [], already activated activesupport-3.0.0 for ["mongoid-1.9.1"] (Gem::LoadError) 
    from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:1082:in `gem' 
    from /opt/local/lib/ruby/gems/1.8/gems/mongoid-1.9.1/lib/mongoid.rb:24 
    from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require' 
    from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require' 
    from ./rubymongo.rb:4 

Si je retourne à avoir un installé activesupport plus, comment puis-je faire que le plus récent est pas être frappé aussi bien?

Je suis encore très jeune à Ruby, alors s'il vous plaît élaborer dans votre réponse.

Après mise à niveau vers la suggestion de bêta par Simon MongoId 2.0, je reçois un nouveau conflit au sujet BSON trop nouveau:

/opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:233:in `activate': can't activate bson (= 1.0.4, runtime) for ["mongoid-2.0.0.beta.17"], already activated bson-1.0.7 for ["mongo-1.0.7", "mongoid-2.0.0.beta.17"] (Gem::LoadError) 
    from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:249:in `activate' 
    from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `each' 
    from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `activate' 
    from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:35:in `require' 
    from ./rubymongo.rb:4 

Pourquoi BSON 1.0.4 déjà chargé? Est-ce que quelque chose d'autre essaie de le charger explicitement? Tout mon script simple .rb nécessite des rubygems et mongoid à ce stade.

Ici ce sont toutes les gemmes que j'utilise que son correspondant:

actionpack (3.0.0, 2.3.8) 
activemodel (3.0.0) 
activerecord (3.0.0) 
activeresource (3.0.0) 
activesupport (3.0.0) 
bson (1.0.7, 1.0.4) 
bson_ext (1.0.7) 
mongo (1.0.8, 1.0.7) 
mongo_ext (0.19.3) 
mongoid (2.0.0.beta.17) 
rails (3.0.0, 2.3.8) 
+0

Vraiment bonne question! J'ai rencontré une situation similaire. Je voulais simplement faire un benchmarking séparément de Rails. La suggestion de Steve Hook a bien fonctionné. – randomguy

Répondre

1

Je pense que je suis tombé sur le même problème. Cela semble provenir d'un conflit de dépendance. mongo 1.0.8 tirera en bson 1.0.7 mais mongoïde dépend de bson 1.0.4 qui mène à l'affrontement. Je pense que tout se résume aux dépendances très spécifiques que possède la beta mongoïde.

j'ai réussi à obtenir cette combinaison de gemmes travailler ensemble:

activemodel (3.0.0) 
activesupport (3.0.0) 
rails (3.0.0) 
mongo (1.0.7) 
mongoid (2.0.0.beta.18) 
bson (1.0.4) 

Cela signifiait que je devais installer explicitement mongo 1.0.7 et 1.0.4 BSON et désinstaller les dernières versions (1.0.8 et mongo bson 1.0.7). J'étais alors capable de lancer un script simple.

+0

Fonctionne comme un charme! – randomguy

+0

Malheureusement Rake (0.8.7) dépend de bson (1.0.7). – randomguy

+0

Je rencontre tous les mêmes problèmes, seulement avec des numéros de version plus récents. –

1

En effet, il y a un conflit de version Gem.

Il existe deux versions de MongoId disponibles en ce moment: * 1.9.1 stable * 2.0.0 beta

Les deux doivent fonctionner correctement avec Rails 3. Même MongoId 1.9.1, ce qui est un peu plus vieux, qui dépend de activesupport <= 3.0.0 signifie que Rails 3 est une dépendance valide. Peut-être, vous travaillez toujours avec Rails 3 RC.

Je vous suggère:

  1. Assurez-vous que vous avez changé Gemfile utiliser Rails 3, régénéré votre Gemfile.lock et réinstallé les dépendances

    gem "rails", 3.0.0" 
    
    $ bundle update 
    $ bundle install 
    
  2. Si le problème persiste, essayez mise à niveau vers mongoid 2.0.0 beta.

+1

Je ne pense pas 1) est une option pour moi. Je n'utilise pas Rails, juste un seul fichier .rb que je lance à partir d'un shell. J'ai essayé de mettre à jour vers mongoid 2.0.0, j'ai dû mettre à niveau vers bson 1.0.7, et maintenant on me dit 'ne peut pas activer bson (= 1.0.4, runtime) pour ["mongoid-2.0.0.beta.17 "], déjà activé bson-1.0.7 pour [" mongo-1.0.7 "," mongoid-2.0.0.beta.17 "] '. Pourquoi n'est-il pas assez intelligent pour ne pas utiliser la bonne version ici? Est-ce que quelque chose d'autre utilise 1.0.4? –

Questions connexes