Frage

Ich versuche, Mongoid über ein einfaches Ruby-Skript zu verwenden (nicht über Rails oder ein anderes Framework) und glaube, dass ich auf einige Versionsabhängigkeitskonflikte stoße:

/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

Meine lokalen Rails wurden bereits auf 3.0.0 aktualisiert, und wenn ich den Fehler richtig gelesen habe, gibt es irgendwo eine Anforderung, die besagt, dass ActiveSupport < 3.0.pre sein muss und 3.0.0 zu neu ist?

Liegt das daran, dass Rails 3.0 brandneu ist und Mongoid möglicherweise irgendwo eine Konfigurationsoption mit 3.0.pre definiert hat, die ich aktualisieren muss?Wo würde ich das machen?

Früher hatte ich auch noch die alten Rails installiert, bekam aber eine andere Fehlermeldung:

/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

Wie stelle ich sicher, dass nicht auch die neuere Version betroffen ist, wenn ich wieder eine ältere aktive Unterstützung installiere?

Ich bin noch sehr neu bei Ruby, also erläutern Sie bitte Ihre Antwort.

Nach dem Upgrade auf die Mongoid 2.0-Beta gemäß Simons Vorschlag bekomme ich einen neuen Konflikt, weil bson zu neu ist:

/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

Warum ist BSON 1.0.4 bereits geladen?Versucht etwas anderes, es explizit zu laden?Alles, was mein einfaches .rb-Skript an dieser Stelle benötigt, sind Rubygems und Mongoid.

Hier sind alle Juwelen, die ich verwende und die relevant klingen:

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)
War es hilfreich?

Lösung

Ich glaube, ich bin auf das gleiche Problem gestoßen.Es scheint durch einen Abhängigkeitskonflikt verursacht zu werden.Mongo 1.0.8 zieht Bson 1.0.7 ein, aber Mongoid hängt von Bson 1.0.4 ab, was zum Konflikt führt.Ich denke, es kommt alles auf die sehr spezifischen Abhängigkeiten an, die die Mongoid-Beta hat.

Es ist mir gelungen, diese Kombination von Edelsteinen zusammenzubringen:

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)

Das bedeutete, dass ich Mongo 1.0.7 und Bson 1.0.4 explizit installieren und die neuesten Versionen (Mongo 1.0.8 und Bson 1.0.7) deinstallieren musste.Anschließend konnte ich ein einfaches Skript ausführen.

Andere Tipps

Tatsächlich gibt es einen Gem-Versionskonflikt.

Derzeit sind zwei Versionen von Mongoid verfügbar:* 1.9.1 stabil * 2.0.0 Beta

Beide sollten gut mit Rails 3 funktionieren.Sogar Mongoid 1.9.1, das etwas älter ist, hängt davon ab activesupport <= 3.0.0 was bedeutet, dass Rails 3 eine gültige Abhängigkeit ist.Möglicherweise arbeiten Sie immer noch mit Rails 3 RC.

Ich empfehle Ihnen:

  1. Stellen Sie sicher, dass Sie Ihr Gemfile geändert haben, um Rails 3 zu verwenden, Ihr Gemfile.lock neu generiert und die Abhängigkeiten neu installiert haben

    gem "rails", 3.0.0"
    
    $ bundle update
    $ bundle install
    
  2. Wenn das Problem weiterhin besteht, versuchen Sie ein Upgrade auf mongoid 2.0.0 Beta.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top