Проблема с Mongoid / ActiveSupport - PullRequest
1 голос
/ 31 августа 2010

Я пытаюсь использовать 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, и если я правильно прочитал ошибку, где-то есть требование, что activesupport должен быть <3.0.pre, а 3.0.0 слишком новый? </p>

Это потому, что 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

Если я вернусь к установке более старой активной поддержки, каксделать так, чтобы новый также не попал?

Я все еще плохо знаком с 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 - это рубины и монгоиды на этом этапе.

Вот все драгоценные камни, которые я использую для этого звука:

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)

Ответы [ 2 ]

1 голос
/ 15 сентября 2010

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

1 голос
/ 31 августа 2010

Действительно, существует конфликт версий 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.

...