2016-07-08 32 views
1

我不断收到activemodel的不兼容问题。目前的错误是;开发新的webapp Rails MongoDB

Bundler could not find compatible versions for gem "activemodel": 
    In Gemfile: 
    mongoid (~> 4.0.0) was resolved to 4.0.0, which depends on 
     activemodel (~> 4.0) 

    rails (~> 5.0.0) was resolved to 5.0.0, which depends on 
     activemodel (= 5.0.0) 

    rails (~> 5.0.0) was resolved to 5.0.0, which depends on 
     activemodel (= 5.0.0) 

我目前的版本是;

  • 的Rails 5.0.0
  • 红宝石2.2.2p95
  • 蒙戈版本:3.2.6

在另一个但类似的线,我把我的webapp不活跃记录,也卸载宝石,但它似乎总是在我的gem文件中重现。

在创建我的web应用程序 -

rails new test-app --skip-active-record --skip-test-unit 

的Gemfile:

source 'https://rubygems.org' 
gem 'rails', '~> 5.0.0' 

group :assets do 
     # Use SCSS for stylesheets 
     gem 'sass-rails', '~> 5.0' 
     # Use Uglifier as compressor for JavaScript assets 
     gem 'uglifier' 
     # Use CoffeeScript for .coffee assets and views 
     gem 'coffee-rails' 
end 
# Use jquery as the JavaScript library 
gem 'jquery-rails' 
# Mongo linker 
gem 'mongoid', git: 'https://github.com/estolfo/mongoid.git' 
# Turbolinks makes navigating web application faster. 
gem 'turbolinks' 
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 
gem 'jbuilder' 
group :development do 
    gem 'better_errors' 
    gem 'binding_of_caller', :platforms=>[:mri_19, :mri_20, :rbx] 
    gem 'quiet_assets' 
end 
#Rspec for unit testing 
gem "rspec-rails", :group => [:development, :test] 
gem 'figaro' 
gem "capybara", :group => :test 
gem "database_cleaner", :group => :test 
gem "mongoid-rspec", :group => :test 
gem "email_spec", :group => :test 
gem "cucumber-rails", :group => :test, :require => false 
gem "launchy", :group => :test 
gem "factory_girl_rails", :group => [:development, :test] 
gem "devise" 
gem 'therubyracer', platforms: :ruby 

有一次,我改变了我的Gemfile专门mongoid

gem 'mongoid', git: 'https://github.com/estolfo/mongoid.git', branch: 'MONGOID-4218-rails-5' 

的错误出现的是 -

Bundler could not find compatible versions for gem "activesupport": 
    In Gemfile: 
    mongoid was resolved to 6.0.0, which depends on 
     activemodel (= 5.0.0.beta3) was resolved to 5.0.0.beta3, which depends on 
     activesupport (= 5.0.0.beta3) 

    rails (~> 5.0.0) was resolved to 5.0.0, which depends on 
     activesupport (= 5.0.0) 

    rails (~> 5.0.0) was resolved to 5.0.0, which depends on 
     activesupport (= 5.0.0) 

    rails (~> 5.0.0) was resolved to 5.0.0, which depends on 
     activesupport (= 5.0.0) 
+0

看起来你的mongoid必须是5.1.0以后的版本 - 请参阅https://jira.mongodb.org/browse/MONGOID-3870 – dmitryro

+0

我更改了gemfile,但错误是不同的 - 上面给出的结果。 – user44552

+0

您可以省略明确指定gem版本,让bundler抓取最合适的版本。或者,您需要探索依赖关系链以确保没有版本冲突。 – dmitryro

回答

0

卸载与gem uninstall rails的Rails。

您目前拥有Rails 5.0.0,但您需要来自m 5.0.0.beta3的有效支持。所以你应该运行gem install rails -v 5.0.0.beta3

然后尝试rails new

1

我能够使用您在问题中提供的步骤以及您的Gemfile来重新创建开发环境。在我的情况下,我已经设法解决您提到的冲突,并按照以下方式安装gem。

首先,我不知道你为什么使用official mongoid repository的分叉回购。这样,我决定使用官方的宝石,并改变了Gemfile的行(尽管我认为这个解决方案仍然有效,以防你想从另一个repo安装宝石):gem 'mongoid'

在那之后,我执行的bundle install,得到了以下错误:

Bundler could not find compatible versions for gem "railties": 
    In Gemfile: 
    quiet_assets (>= 1.0.2) was resolved to 1.0.2, which depends on 
     railties (< 5.0, >= 3.1) 

    rails (~> 5.0.0) was resolved to 5.0.0, which depends on 
     railties (= 5.0.0) 

    rspec-rails was resolved to 3.5.1, which depends on 
     railties (>= 3.0) 

    sass-rails (~> 5.0) was resolved to 5.0.5, which depends on 
     railties (< 6, >= 4.0.0) 

检查输出我发现了互相矛盾的宝石是quiet_assets。考虑到这一点,我参观了quiet_assets GitHub repository,发现其README.md如下:

弃用

由于链轮护栏3.1.0版本,在 轨当前版本中使用,这是宝石弃用。

资产管道现在支持其抑制资产要求的输出 一个安静的选项:

# config/environments/development.rb 

config.assets.quiet = true 

相关PR:https://github.com/rails/sprockets-rails/pull/355

看来,这种宝石的功能,现在可以完成添加这一小块配置到您的Rails环境文件中,所以我从Gemfile中删除了需要quiet_assets的行,将文档留下如下:

source 'https://rubygems.org' 
gem 'rails', '~> 5.0.0' 

group :assets do 
     # Use SCSS for stylesheets 
     gem 'sass-rails', '~> 5.0' 
     # Use Uglifier as compressor for JavaScript assets 
     gem 'uglifier' 
     # Use CoffeeScript for .coffee assets and views 
     gem 'coffee-rails' 
end 
# Use jquery as the JavaScript library 
gem 'jquery-rails' 
# Mongo linker 
gem 'mongoid' 
# Turbolinks makes navigating web application faster. 
gem 'turbolinks' 
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 
gem 'jbuilder' 
group :development do 
    gem 'better_errors' 
    gem 'binding_of_caller', :platforms=>[:mri_19, :mri_20, :rbx] 
end 
#Rspec for unit testing 
gem "rspec-rails", :group => [:development, :test] 
gem 'figaro' 
gem "capybara", :group => :test 
gem "database_cleaner", :group => :test 
gem "mongoid-rspec", :group => :test 
gem "email_spec", :group => :test 
gem "cucumber-rails", :group => :test, :require => false 
gem "launchy", :group => :test 
gem "factory_girl_rails", :group => [:development, :test] 
gem "devise" 
gem 'therubyracer', platforms: :ruby 

执行其他bundle install后,这时候所有的依赖性已成功安装。

我希望这可以帮助你。如果这种解决方案不适合您的需求,请让我知道。

+0

这很好,谢谢 – user44552