rubygems /仅为测试(或任何给定的env)添加运行时依赖项

问题描述 投票:0回答:1

目前正在开发一个扩展spec功能的gem(它需要factory_bot),如何在add_runtime_dependency中仅为相关组(这里,:test)定义它?

或者,如果用户在其项目中没有添加相关的依赖项,那么让gem增加是一种更好的做法吗?

ruby-on-rails rspec rubygems
1个回答
1
投票

如果您的gem具有运行时依赖性,则应该在gemspec中列出,因为这允许Bundler执行依赖项解析以查看您的gem是否与Gemfile中的其他gem兼容。

最终用户可以将您的gem放在Gemfile中的一个组中。如果将它们放在:test组中,它将仅在测试环境中加载。如果他们没有阅读自述文件并将其放在主要组中,那么它不是您的问题。

Gem::Specification.new do |s|
  # ...
  s.add_dependency 'factory_bot', version
  # ...
end 

请注意,您还可以在gemspec中列出开发依赖项。

Gem::Specification.new do |s|
  # ...
  s.add_development_dependency 'rubocop', '~> 0.44.1'
end

这些依赖项将在开发/测试gem本身时使用,但在通过bundler安装gem时不会“传递”。

如果用户在项目中没有添加相关的依赖项,那么让gem增加是一种更好的做法吗?

没有.Ruby已经有一个很好的依赖解析器(Bundler)。用它。

© www.soinside.com 2019 - 2024. All rights reserved.