我在我的gems文件上使用bundler来执行应用程序,并且发现使用bundler-only只能够选择部署所需的一个gems子集是很方便的。
因此,在我的部署机器上,我使用bundle-only,它只安装在deploy组下命名空间的gems。
然而,由于这一点,我需要复制一些宝石(例如。我的部署需要发送通知来松弛,所以我在全局命名空间和我的:部署专用命名空间中都有一些通知程序gems。这会引起几个警告
Gemfile不止一次列出创业板松弛通知程序(>= 0)。你应该只留一个。虽然这现在不是问题,但如果稍后更改其中一个版本,可能会导致错误。
有什么办法来压制警告吗?(如果可能的话,仅限于这些宝石)
发布于 2017-06-14 09:52:07
另一种选择是维护所有groups的列表,并系统地包括, groups: groups
# Gemfile
groups = [:deploy, :x, :y, :z, ...] # Maintain this list as you add groups
# Gems needed except in deploy
gem :a
gem :b
...
# Gems that are also required for deploy
gem :d1, groups: groups
gem :d2, groups: groups
# Gems that are required ONLY in deploy
group :deploy do
gem :dep_only1
gem :dep_only2
end因此,下面的工作没有警告
bundle --without deploy # Will ignore deploy group
bundle-only deploy # Will install only deploy gems including those that are also needed by the app发布于 2017-06-14 08:27:17
不要只列出一次宝石。这一警告是有充分理由的。
您可以在Gemfile中同时将gems分组到多个命名空间中,如下所示:
group :deploy, :somethingelse do
gem 'slack-notifier'
end
group :deploy do
# Deploy-ONLY gems
end
group :somethingelse
# Somethingelse-ONLY gems
end或者,如果您愿意的话,可以内联地进行这种分组:
gem 'slack-notifier', group: [:deploy, :somethingelse]有关更多信息,请阅读Gemfile组上的邦德勒文件。
https://stackoverflow.com/questions/44538961
复制相似问题