我在gemfile上使用bundler来执行应用程序,并发现使用bundler-only
只能选择部署所需的宝石子集很方便。
因此,在我的部署计算机上,我使用bundle-only
只会在deploy
组下安装名为namespace的gems。
然而,因为这个我需要复制一些gem(例如我的部署需要向slack发送通知,所以我在我的全局命名空间和my:deploy-only命名空间中都有一些notifier gem。 这导致了几个警告
你的Gemfile不止一次列出了gem slack-notifier(> = 0)。您 应该只保留其中一个。虽然现在不是问题, 如果您稍后更改其中一个版本,可能会导致错误
有没有办法抑制警告? (如果可能的话,只有那些宝石)
答案 0 :(得分:1)
不要多次列出宝石。那个警告是有充分理由的。
您可以在Gemfile
内一次将多个名称空间下的宝石分组,如下所示:
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组上的bundler documentation。
答案 1 :(得分:0)
另一种方法是维护所有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