将 mongo gem 更新到版本 5.0.0 并将 rails 更新到 4.0.0,它给出了问题 "Bundler could not find compatible versions for gem "railties"
updating mongoid gem to verison 5.0.0 and rails to 4.0.0, it is giving issue "Bundler could not find compatible versions for gem "railties"
同时 运行 捆绑包安装出现以下错误
Bundler could not find compatible versions for gem "railties":
在 Gemfile 中:
devise (~> 3.2.4) 被解析为 3.2.4,这取决于
railties (< 5, >= 3.2.6)
factory_girl_rails (~> 4.4.0) was resolved to 4.4.1, which depends on
railties (>= 3.0.0)
jquery-payment-rails was resolved to 0.0.1, which depends on
railties (~> 4.0.0)
jquery-rails (~> 3.0.0) was resolved to 3.0.4, which depends on
railties (< 5.0, >= 3.0)
rails (~> 4.0.0) was resolved to 4.0.0, which depends on
railties (= 4.0.0)
rspec-rails (~> 3.4.0) was resolved to 3.4.2, which depends on
railties (< 4.3, >= 3.0)
sass-rails (~> 3.2.3) was resolved to 3.2.3, which depends on
railties (~> 3.2.0.beta)
宝石文件:
ruby '2.2.2'
## Sinatra App Gems
gem 'sinatra', '~> 1.4.4'
gem 'sass', '~> 3.4.13'
gem 'sinatra-assetpack', '~> 0.3.1', :require => 'sinatra/assetpack'
gem 'sinatra-env', '~> 0.0.2'
## Rails App Gems
gem 'rails', '~> 4.0.0'
gem 'foreman', '~> 0.78.0'
gem 'puma', '~> 2.14.0'
gem 'simple_form', '~> 2.1.3'
gem 'simple_enum', '~> 1.6.0', :require => 'simple_enum/mongoid'
gem 'mongoid', '~> 5.0.0'
gem 'devise', '~> 3.4.1'
gem 'possessive', '~> 1.0.1'
gem 'american_date', '~> 1.1.0'
gem 'sht_rails', '~> 0.2.2'
gem 'version', '~> 1.0.0'
gem 'rdiscount', '~> 2.1.7'
gem 'ssl_enforcer', '~> 0.2.3'
#
gem 'sidekiq', '~> 3.5.0'
gem 'slim', '~> 3.0.2'
group :development do
gem 'capistrano', '~> 3.4.0'
gem 'capistrano-rvm', '~> 0.1.2'
gem 'capistrano-rails', '~> 1.1.3'
gem 'capistrano-bundler', '~> 1.1.4'
gem 'capistrano-foreman', github: 'koenpunt/capistrano-foreman'
gem 'spring'
gem 'spring-commands-rspec', '~> 1.0.4'
end
group :assets do
gem 'pusher_rails', '~> 1.0.1'
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'jquery-rails', '~> 3.0.0'
gem 'bootstrap-sass', '~> 2.3.0.0'
gem 'font-awesome-sass-rails', '~> 3.0.2.2'
gem 'uglifier', '>= 1.0.3'
gem 'modernizr-rails', '~> 2.7.1'
gem 'jquery-payment-rails', '~> 0.0.1'
gem 'jquery-validation-rails', '~> 1.13.1'
end
group :development, :test do
gem 'test-unit', '~> 3.0'
gem 'rspec-rails', '~> 3.3.3'
gem 'factory_girl_rails', '~> 4.5.0'
gem 'mongoid-rspec', '~> 1.13.0'
gem 'guard-rspec', '~> 4.6.4'
gem 'simplecov', '~> 0.10.0', require: false
end
group :test do
gem 'database_cleaner', '~> 1.5.1'
gem 'faker', '~> 1.5.0'
end
我也删除了 gemfile.lock 文件,但它仍然存在问题
好的,这里就railties
版本要求的情况根据给你的错误稍微分析一下:
1) railties (>= 3.0.0)
2) railties (~> 4.0.0) => (< 4.1, >= 4.0.0)
3) railties (< 5.0, >= 3.0)
4) railties (= 4.0.0)
5) railties (< 4.3, >= 3.0)
6) railties (~> 3.2.0.beta) => (< 3.2.1, >= 3.2.0.beta)
除了来自sass-rails
gem的6),这里的所有版本依赖都可以共存。尝试更新到最新版本 sass-rails
,你会没事的(5.0.4 是最新版本)因为它使用 railties (>= 4.0.0, < 5.0)
。此外,4.0.0 之后的所有 sass-rails
版本也可以工作,因为那时 railties
依赖项发生了变化 - see this.
更新
我已经检查了您的 Gemfile,为了获得所需的 mongo 版本,您可以做的最小更改如下(更改已注释):
ruby '2.2.2'
## Sinatra App Gems
gem 'sinatra', '~> 1.4.4'
gem 'sass', '~> 3.4.13'
gem 'sinatra-assetpack', '~> 0.3.1', :require => 'sinatra/assetpack'
gem 'sinatra-env', '~> 0.0.2'
## Rails App Gems
gem 'rails', '~> 4.0.0'
gem 'foreman', '~> 0.78.0'
gem 'puma', '~> 2.14.0'
gem 'simple_form', '~> 3.0.0' # CHANGED
gem 'simple_enum', '~> 1.6.0', :require => 'simple_enum/mongoid'
gem 'mongoid', '~> 5.0.0'
gem 'devise', '~> 3.4.1'
gem 'possessive', '~> 1.0.1'
gem 'american_date', '~> 1.1.0'
gem 'sht_rails', '~> 0.2.2'
gem 'version', '~> 1.0.0'
gem 'rdiscount', '~> 2.1.7'
gem 'ssl_enforcer', '~> 0.2.3'
gem 'sidekiq', '~> 3.5.0'
gem 'slim', '~> 3.0.2'
group :development do
gem 'capistrano', '~> 3.4.0'
gem 'capistrano-rvm', '~> 0.1.2'
gem 'capistrano-rails', '~> 1.1.3'
gem 'capistrano-bundler', '~> 1.1.4'
gem 'capistrano-foreman', github: 'koenpunt/capistrano-foreman'
gem 'spring'
gem 'spring-commands-rspec', '~> 1.0.4'
end
group :assets do
gem 'pusher_rails', '~> 1.0.1'
gem 'sass-rails', '~> 4.0.1' # CHANGED
gem 'coffee-rails', '~> 4.0.0' # CHANGED
gem 'jquery-rails', '~> 3.0.0'
gem 'bootstrap-sass', '~> 2.3.0.0'
gem 'font-awesome-sass-rails', '~> 3.0.2.2'
gem 'uglifier', '>= 1.0.3'
gem 'modernizr-rails', '~> 2.7.1'
gem 'jquery-payment-rails', :git => 'https://github.com/thoughtbot/jquery-payment-rails.git', :ref => 'd401bf9' # CHANGED
gem 'jquery-validation-rails', '~> 1.13.1'
end
group :development, :test do
gem 'test-unit', '~> 3.0'
gem 'rspec-rails', '~> 3.4.0' # CHANGED
gem 'factory_girl_rails', '~> 4.5.0'
gem 'mongoid-rspec', '~> 3.0.0' # CHANGED
gem 'guard-rspec', '~> 4.6.4'
gem 'simplecov', '~> 0.10.0', require: false
end
group :test do
gem 'database_cleaner', '~> 1.5.1'
gem 'faker', '~> 1.5.0'
end
你可能应该 运行 bundle update
在此更改之后,但要小心,因为这会根据你的 Gemfile 更新所有 gems。
同时 运行 捆绑包安装出现以下错误
Bundler could not find compatible versions for gem "railties":
在 Gemfile 中: devise (~> 3.2.4) 被解析为 3.2.4,这取决于 railties (< 5, >= 3.2.6)
factory_girl_rails (~> 4.4.0) was resolved to 4.4.1, which depends on
railties (>= 3.0.0)
jquery-payment-rails was resolved to 0.0.1, which depends on
railties (~> 4.0.0)
jquery-rails (~> 3.0.0) was resolved to 3.0.4, which depends on
railties (< 5.0, >= 3.0)
rails (~> 4.0.0) was resolved to 4.0.0, which depends on
railties (= 4.0.0)
rspec-rails (~> 3.4.0) was resolved to 3.4.2, which depends on
railties (< 4.3, >= 3.0)
sass-rails (~> 3.2.3) was resolved to 3.2.3, which depends on
railties (~> 3.2.0.beta)
宝石文件:
ruby '2.2.2'
## Sinatra App Gems
gem 'sinatra', '~> 1.4.4'
gem 'sass', '~> 3.4.13'
gem 'sinatra-assetpack', '~> 0.3.1', :require => 'sinatra/assetpack'
gem 'sinatra-env', '~> 0.0.2'
## Rails App Gems
gem 'rails', '~> 4.0.0'
gem 'foreman', '~> 0.78.0'
gem 'puma', '~> 2.14.0'
gem 'simple_form', '~> 2.1.3'
gem 'simple_enum', '~> 1.6.0', :require => 'simple_enum/mongoid'
gem 'mongoid', '~> 5.0.0'
gem 'devise', '~> 3.4.1'
gem 'possessive', '~> 1.0.1'
gem 'american_date', '~> 1.1.0'
gem 'sht_rails', '~> 0.2.2'
gem 'version', '~> 1.0.0'
gem 'rdiscount', '~> 2.1.7'
gem 'ssl_enforcer', '~> 0.2.3'
#
gem 'sidekiq', '~> 3.5.0'
gem 'slim', '~> 3.0.2'
group :development do
gem 'capistrano', '~> 3.4.0'
gem 'capistrano-rvm', '~> 0.1.2'
gem 'capistrano-rails', '~> 1.1.3'
gem 'capistrano-bundler', '~> 1.1.4'
gem 'capistrano-foreman', github: 'koenpunt/capistrano-foreman'
gem 'spring'
gem 'spring-commands-rspec', '~> 1.0.4'
end
group :assets do
gem 'pusher_rails', '~> 1.0.1'
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'jquery-rails', '~> 3.0.0'
gem 'bootstrap-sass', '~> 2.3.0.0'
gem 'font-awesome-sass-rails', '~> 3.0.2.2'
gem 'uglifier', '>= 1.0.3'
gem 'modernizr-rails', '~> 2.7.1'
gem 'jquery-payment-rails', '~> 0.0.1'
gem 'jquery-validation-rails', '~> 1.13.1'
end
group :development, :test do
gem 'test-unit', '~> 3.0'
gem 'rspec-rails', '~> 3.3.3'
gem 'factory_girl_rails', '~> 4.5.0'
gem 'mongoid-rspec', '~> 1.13.0'
gem 'guard-rspec', '~> 4.6.4'
gem 'simplecov', '~> 0.10.0', require: false
end
group :test do
gem 'database_cleaner', '~> 1.5.1'
gem 'faker', '~> 1.5.0'
end
我也删除了 gemfile.lock 文件,但它仍然存在问题
好的,这里就railties
版本要求的情况根据给你的错误稍微分析一下:
1) railties (>= 3.0.0)
2) railties (~> 4.0.0) => (< 4.1, >= 4.0.0)
3) railties (< 5.0, >= 3.0)
4) railties (= 4.0.0)
5) railties (< 4.3, >= 3.0)
6) railties (~> 3.2.0.beta) => (< 3.2.1, >= 3.2.0.beta)
除了来自sass-rails
gem的6),这里的所有版本依赖都可以共存。尝试更新到最新版本 sass-rails
,你会没事的(5.0.4 是最新版本)因为它使用 railties (>= 4.0.0, < 5.0)
。此外,4.0.0 之后的所有 sass-rails
版本也可以工作,因为那时 railties
依赖项发生了变化 - see this.
更新
我已经检查了您的 Gemfile,为了获得所需的 mongo 版本,您可以做的最小更改如下(更改已注释):
ruby '2.2.2'
## Sinatra App Gems
gem 'sinatra', '~> 1.4.4'
gem 'sass', '~> 3.4.13'
gem 'sinatra-assetpack', '~> 0.3.1', :require => 'sinatra/assetpack'
gem 'sinatra-env', '~> 0.0.2'
## Rails App Gems
gem 'rails', '~> 4.0.0'
gem 'foreman', '~> 0.78.0'
gem 'puma', '~> 2.14.0'
gem 'simple_form', '~> 3.0.0' # CHANGED
gem 'simple_enum', '~> 1.6.0', :require => 'simple_enum/mongoid'
gem 'mongoid', '~> 5.0.0'
gem 'devise', '~> 3.4.1'
gem 'possessive', '~> 1.0.1'
gem 'american_date', '~> 1.1.0'
gem 'sht_rails', '~> 0.2.2'
gem 'version', '~> 1.0.0'
gem 'rdiscount', '~> 2.1.7'
gem 'ssl_enforcer', '~> 0.2.3'
gem 'sidekiq', '~> 3.5.0'
gem 'slim', '~> 3.0.2'
group :development do
gem 'capistrano', '~> 3.4.0'
gem 'capistrano-rvm', '~> 0.1.2'
gem 'capistrano-rails', '~> 1.1.3'
gem 'capistrano-bundler', '~> 1.1.4'
gem 'capistrano-foreman', github: 'koenpunt/capistrano-foreman'
gem 'spring'
gem 'spring-commands-rspec', '~> 1.0.4'
end
group :assets do
gem 'pusher_rails', '~> 1.0.1'
gem 'sass-rails', '~> 4.0.1' # CHANGED
gem 'coffee-rails', '~> 4.0.0' # CHANGED
gem 'jquery-rails', '~> 3.0.0'
gem 'bootstrap-sass', '~> 2.3.0.0'
gem 'font-awesome-sass-rails', '~> 3.0.2.2'
gem 'uglifier', '>= 1.0.3'
gem 'modernizr-rails', '~> 2.7.1'
gem 'jquery-payment-rails', :git => 'https://github.com/thoughtbot/jquery-payment-rails.git', :ref => 'd401bf9' # CHANGED
gem 'jquery-validation-rails', '~> 1.13.1'
end
group :development, :test do
gem 'test-unit', '~> 3.0'
gem 'rspec-rails', '~> 3.4.0' # CHANGED
gem 'factory_girl_rails', '~> 4.5.0'
gem 'mongoid-rspec', '~> 3.0.0' # CHANGED
gem 'guard-rspec', '~> 4.6.4'
gem 'simplecov', '~> 0.10.0', require: false
end
group :test do
gem 'database_cleaner', '~> 1.5.1'
gem 'faker', '~> 1.5.0'
end
你可能应该 运行 bundle update
在此更改之后,但要小心,因为这会根据你的 Gemfile 更新所有 gems。