【发布时间】:2016-02-17 10:22:17
【问题描述】:
我有以下 Gemfile
source "http://rubygems.org"
gem "bundler", "1.10.6"
gem "unicorn", "4.8.2"
group :supply do
gem "backup", "4.1.10"
end
group :bunker do
gem "capistrano", "3.4.0"
gem "capistrano-rbenv", "2.0.3"
gem "capistrano-bundler", "1.1.4"
gem "capistrano-rails", "1.1.3"
gem "capistrano-nc", "0.1.4"
end
group :reinforcement do
gem "actionview", "4.2.1"
gem "actionmailer", "4.2.1"
gem "mail", "2.6.3"
gem "daemons", "1.2.3"
gem "tmail", "1.2.7.1"
gem "activerecord", "4.2.1"
gem "starling", "0.10.1"
end
我有多种类型的服务器,并希望在特定服务器上安装特定的 gem,例如。仅在供应服务器等上备份 gem。
当我运行以下捆绑安装命令时
bundle install --clean --without supply bunker --path /tmp/
我收到以下错误。
Bundler could not find compatible versions for gem "mail":
In Gemfile:
mail (>= 2.5.4, ~> 2.5) ruby
backup (= 4.1.10) ruby depends on
mail (= 2.5.4) ruby
mail (= 2.6.3) ruby
如果without 是排除某个组的gem,那么该命令应该可以正常运行,因为它不应该尝试安装邮件和备份,因为它们不在同一个组中。
我是否遗漏了什么或做错了什么?
【问题讨论】:
-
你的例子有缺陷。您不会排除引用
mailgem 的reinforcement组。 -
@Mihai-AndreiDinculescu,但我排除了
supply组,这意味着它应该尝试安装backupgem。 -
但是你的错误信息说
backup依赖于mail。 -
正确,当有依赖包时,将安装 gem 所需的特定版本,例如。
backup依赖于mail=2.5.4,这里的冲突是它还尝试安装mailgem 版本2.6.3,它在不同的组中并且被排除在外。
标签: ruby-on-rails ruby rubygems bundler