2010-08-31 70 views
1

我試圖使用Mongoid從一個普通的Ruby腳本(不通過導軌或任何其他框架),我想我遇到一些版本依賴衝突:Mongoid /版本的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 

我本地Rails已經升級到3.0.0,並且如果我正確地讀取了錯誤,有一個要求說主動支持必須是< 3.0.pre和3.0.0太新了?

這是因爲Rails 3.0是全新的,也許Mongoid有一個配置選項3.0.pre的地方定義我需要升級?我會在哪裏做?

我以前也有老的Rails仍然安裝過,但有一個不同的錯誤:

/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 

如果我回去有安裝了舊的ActiveSupport,我該怎麼辦確保新的一個不被擊中以及?

我對Ruby還是很新的,所以請在你的答案中詳細說明。

升級到每西蒙的建議下Mongoid 2.0測試版後,我收到約BSON太新了新的衝突:

/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 

爲什麼BSON 1.0.4已經加載?其他東西是否試圖明確加載它?我所有的簡單.rb腳本都需要rubygems和mongoid。

這裏的一切我用聲音相關的寶石:

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

真的很好的問題!我遇到了類似的情況。我只是想單獨從Rails做一些基準測試。史蒂夫胡克的建議很好地工作。 – randomguy 2010-09-16 11:03:41

回答

1

我想我遇到了同樣的問題。它似乎是由依賴衝突引起的。 mongo 1.0.8將拉入bson 1.0.7,但mongoid依賴於導致衝突的bson 1.0.4。我認爲這一切都歸結爲mongoid測試版具有的特定依賴關係。

我設法得到寶石的結合一起工作:

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) 

這意味着我必須明確地安裝蒙戈1.0.7和1.0.4 BSON和卸載最新版本(1.0.8蒙戈和bson 1.0.7)。那時我能夠運行一個簡單的腳本。

+0

工程就像一個魅力! – randomguy 2010-09-16 11:03:57

+0

不幸的是Rake(0.8.7)取決於bson(1.0.7)。 – randomguy 2010-09-16 12:29:56

+0

我遇到同樣的問題,只能用較新的版本號。 – 2011-01-24 06:00:51

1

確實有一個寶石版本衝突。

有可用的mongoid的兩個版本現在: * 1.9.1 stable * 2.0.0 beta

兩個應該使用Rails 3,工作得很好,即使mongoid 1.9.1,這是比較老一點,取決於其activesupport <= 3.0.0意味着Rails 3是一個有效的依賴。 也許,你還在使用Rails 3 RC。

我建議你:

  1. 確保你改變了你的Gemfile用Rails 3,再生您Gemfile.lock的和重新安裝依賴

    gem "rails", 3.0.0" 
    
    $ bundle update 
    $ bundle install 
    
  2. 如果問題仍然存在,嘗試升級到mongoid 2.0.0測試版。

+1

我不認爲1)是我的選擇。我沒有使用Rails,只是一個從shell運行的.rb文件。我嘗試升級到mongoid 2.0.0,必須升級到bson 1.0.7,現在我告訴'不能激活bson(= 1.0.4,運行時)爲[「mongoid-2.0.0.beta.17 「],已經爲[」mongo-1.0.7「,」mongoid-2.0.0.beta.17「]激活了bson-1.0.7。爲什麼它不夠聰明,不能在這裏使用正確的版本?其他東西是否使用1.0.4? – 2010-08-31 18:25:05