我想仅为一组系统未提供的宝石运行bundle --deployment
。我已尝试使用--with=group
,但它已开始为Gemfile
答案 0 :(得分:1)
Bundler的--with
选项与您期望的有所不同。我们首先查看--without
和--with
选项的bundle install
手册页:
--without=<list>
以空格分隔的引用gems的组列表 在安装过程中跳过如果给出了一个组中的组 记住给予的组列表 - 用它,从中删除 名单。这是remembered option。
--with=<list>
以空格分隔的组列表,引用要安装的gem。如果给出了可选组,则会安装该组。如果是一个团体 鉴于这是在被记住的群组列表中给出 - 没有,它 从该列表中删除。这是remembered option。
请务必注意--with
不只是--without
的倒数(尽管--with
组 取消以前记住的--without
组,反之亦然),它支持完全不同的功能(最近一次implemented,大约在2015年中期),(#向后兼容)概念&#34 ;可选组&#34;,仅适用于明确标有optional => true
参数的组。
重要的是,--with
实施不从默认组或--without
未指定的任何其他组中排除gems。
因此,您有两种方法可以将安装限制为一组宝石:
--with
将所有群组标记为&#34;可选群组&#34; (使用:optional => true
参数)并将您要安装的组传递给--with
,并排除所有其他可选组。--without
的黑名单,将您不希望安装的所有群组传递给--without
。不幸的是,这两个选项都无法阻止&#34;默认组中的宝石&#34; (未明确分配给某个组的宝石),因此您必须将您想要的所有宝石放置在某个组中。
以下Gemfile示例应该有助于澄清:
gem "rack" # Always installed; impossible to exclude
group :group, :optional => true do
gem "thin" # Not installed by default; install using --with=group
end
group :another_group, :optional => true do
gem "wirble" # Not installed by default; install using --with=another_group
end
group :third_group do
gem "activesupport", "2.3.5" # Installed by default; exclude using --without=third_group
end