我的组织有许多内部宝石,用于自动化测试,但不是生产部署所必需的。我正在尝试使用Bundler,因此在我的Gemfile中我将这些宝石包装在:
group :test, :development do
gem 'dashboard_summary'
end
然而,当我跑步时:
$ bundle install --without staging development test
我还是
Could not find gem 'dashboard_summary (>= 0) ruby' in the gems available on this machine.
我试图理解为什么Bundler在我告诉它时不会忽视那个宝石。
答案 0 :(得分:4)
这是预期的行为。来自the docs:
虽然
--without
选项会跳过安装指定组中的宝石,但它仍然下载这些宝石并使用它们来解决每个宝石的依赖关系Gemfile中的gem(5)。
虽然最新的Gemfile.lock
可能表明不需要再次解析依赖关系,但看起来即使在这种情况下也会下载所有宝石。
答案 1 :(得分:2)
您没有定义任何包含登台,开发和测试的组。您的小组只进行了测试和开发。
Bundler试图忽略其中包含全部三个名称的组,因此您可以将分段添加到
group :test, :development, :staging do
gem 'dashboard_summary'
end
或者您可以使用
$ bundle install --without test development
答案 2 :(得分:2)
我不确定你为什么要staging
?但这应该有用
bundle install --without test development
您还可以设置bundle config中BUNDLE_WITHOUT
中记录的配置环境变量。
您可以使用
gem 'dashboard_summary', require: false
这不会在启动时加载gem,当你想使用gem时你必须要求它。如果由于依赖性而需要在Gemfile中保留dashboard_summary
,这可能有所帮助,但是节省了加载所需的时间,而不是得到你现在得到的错误。至少要尝试一下。