Проблема с версией Mongoid/activesupport

Я пытаюсь использовать Mongoid из простого скрипта Ruby (не через Rails или какую-либо другую структуру), и я думаю, что сталкиваюсь с некоторыми конфликтами зависимостей версий:

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

person Joost Schuur    schedule 31.08.2010    source источник
comment
Действительно хороший вопрос! Я столкнулся с похожей ситуацией. Я просто хотел провести бенчмаркинг отдельно от Rails. Предложение Стива Хука отлично сработало.   -  person randomguy    schedule 16.09.2010


Ответы (2)


Я думаю, что столкнулся с той же проблемой. Кажется, это вызвано конфликтом зависимостей. 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)

Это означало, что мне пришлось явно установить mongo 1.0.7 и bson 1.0.4 и удалить последние версии (mongo 1.0.8 и bson 1.0.7). Затем я смог запустить простой скрипт.

person Steve    schedule 15.09.2010
comment
К сожалению, Rake (0.8.7) зависит от bson (1.0.7). - person randomguy; 16.09.2010
comment
У меня все те же проблемы, только с более новыми номерами версий. - person Kyle Wild; 24.01.2011

Действительно, есть конфликт версий Gem.

На данный момент доступны две версии mongoid: * 1.9.1, стабильная * бета-версия 2.0.0

Оба должны хорошо работать с 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.

person Simone Carletti    schedule 31.08.2010
comment
Я не думаю, что 1) это вариант для меня. Я не использую Rails, только один файл .rb, который я запускаю из оболочки. Я попытался обновиться до mongoid 2.0.0, мне пришлось обновиться до bson 1.0.7, и теперь мне говорят: «Невозможно активировать bson (= 1.0.4, среда выполнения) для [mongoid-2.0.0.beta.17]. , уже активирован bson-1.0.7 для [mongo-1.0.7, mongoid-2.0.0.beta.17]'. Почему недостаточно ума не использовать здесь правильную версию? Что-то еще использует 1.0.4? - person Joost Schuur; 31.08.2010