如何使用gemspec add_runtime_dependency和`bundle install`

问题描述

我有一个代码库,其中包含一个gemspec文件,例如:

require "rubygems"
::Gem::Specification.new do |specification|
  specification.add_development_dependency "yard","~> 0.9"
  specification.add_runtime_dependency "dry-validation","~> 0.13"
end

bundle install将同时安装两种依赖类型。因此,我只想为我的CI脚本安装运行时依赖项。我看到bundle install --with <group>存在,但没有分组。以交互方式运行,返回的规范从.groups返回空结果。我希望使这两个世界合理化。我必须为每个gem依赖项显式添加一个组吗? add_runtime_dependency和add_development_dependency甚至有区别吗?

解决方法

来自bundler's documentation

由于我们在 Gemfile 中拥有Text("Example") .font(.appFont) 方法调用,因此Bundler会自动将此宝石添加到名为“ development”的组中,然后我们便可以在任何时候加载它们时进行引用带有以下行的宝石:

gemspec

在您的情况下,如果您希望安装所有非用于开发的rubygems,请尝试

Bundler.require(:default,:development)

对于将来的捆绑程序版本,您可以在本地(或全局)进行配置

bundle install --without development

要使其全部正常运行,请验证您的项目中是否有bundle config set --local without 'development' ,该外观看起来像

Gemfile

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...