6

我的组织有许多用于自动化测试的内部 gem,但不是生产部署所必需的。我正在尝试使用 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 没有忽略那个宝石。

4

3 回答 3

5

这是预期的行为。从文档

虽然该--without选项将跳过在指定组中安装gem,但它仍会下载这些 gem 并使用它们来解决 Gemfile(5) 中每个 gem 的依赖关系。

虽然最新版本Gemfile.lock可能表明不需要再次解析依赖项,但即使在这种情况下,似乎所有 gem 都已下载。

于 2013-05-24T20:34:24.743 回答
3

您没有定义任何包含登台、开发和测试的组。你的小组只有测试和开发。

Bundler 试图忽略其中包含所有三个名称的组,因此您可以将暂存添加到

group :test, :development, :staging do
    gem 'dashboard_summary'
end

或者你可以使用

 $ bundle install --without test development
于 2013-05-24T19:14:46.847 回答
2

我不知道你为什么staging在那里?但这应该有效

 bundle install --without test development

您还可以设置bundle configBUNDLE_WITHOUT中记录的配置环境变量。

你可以使用

gem 'dashboard_summary', require: false

这不会在启动时加载 gem,当你想使用 gem 时你必须要求它。如果您因为依赖关系而需要保留dashboard_summary在 Gemfile 中,这可能会有所帮助,但可以节省加载时间并且不会出现您现在遇到的错误。至少可以尝试一下。

于 2013-05-24T19:18:19.843 回答