Pergunta

Estou tentando usar o Mongoid de um script rubi simples (não via trilhos ou qualquer outra estrutura) e acho que estou encontrando alguns conflitos de dependência de versão:

/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

Meus trilhos locais já foram atualizados para 3.0.0 e, se eu ler o erro corretamente, em algum lugar há um requisito dizendo que o ActiveSupport deve ser <3.0.pre e 3.0.0 é muito novo?

Isso ocorre porque o Rails 3.0 é novo e talvez o Mongoid tenha uma opção de configuração em algum lugar com 3.0.pre definido que eu preciso atualizar? Onde eu faria isso?

Eu costumava ter os trilhos antigos ainda instalados também, mas recebia um erro diferente:

/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

Se eu voltar a ter um ActiveSupport mais antigo instalado, como faço para garantir que o mais novo não esteja sendo atingido também?

Ainda sou muito novo no Ruby, então, por favor, elabore sua resposta.

Depois de atualizar para a sugestão do Mongoid 2.0 por Simon, estou recebendo um novo conflito sobre o BSON ser muito novo:

/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

Por que o BSON 1.0.4 já está carregado? Algo mais está tentando carregá -lo explicitamente? Todo o meu script .rb simples requer é rubygems e mongóides neste momento.

Aqui estão todas as jóias que eu uso esse som relevante:

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)
Foi útil?

Solução

Eu acho que me deparei com o mesmo problema. Parece ser causado por um confronto de dependência. O Mongo 1.0.8 atrairá o BSON 1.0.7, mas o mongóide depende do BSON 1.0.4, o que leva ao confronto. Eu acho que tudo se resume às dependências muito específicas que o beta mongóide tem.

Consegui fazer essa combinação de gemas trabalhando juntas:

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)

Isso significava que eu tinha que instalar explicitamente o Mongo 1.0.7 e o BSON 1.0.4 e desinstalar as versões mais recentes (Mongo 1.0.8 e BSON 1.0.7). Consegui executar um script simples.

Outras dicas

Na verdade, há um conflito da versão GEM.

Existem duas versões de mongóides disponíveis agora: * 1.9.1 estável * 2.0.0 beta

Ambos devem funcionar bem com Rails 3. até Mongoid 1.9.1, que é um pouco mais velho, depende de activesupport <= 3.0.0 O que significa que o Rails 3 é uma dependência válida. Talvez você ainda esteja trabalhando com o Rails 3 RC.

Eu sugiro você para:

  1. Certifique -se de alterar o seu GemFile para usar o Rails 3, regenerar seu gemfile.lock e reinstalar as dependências

    gem "rails", 3.0.0"
    
    $ bundle update
    $ bundle install
    
  2. Se o problema persistir, tente atualizar para o Mongoid 2.0.0 beta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top