2016-07-08 59 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