rubygems /添加运行时依赖项仅用于测试(或任何给定的环境)

时间:2019-04-21 08:40:37

标签: ruby-on-rails rspec rubygems

当前正在研究可扩展规范功能的gem(需要factory_bot),如何仅在add_runtime_dependency中为相关组(此处为:test)定义它?

或者,如果用户未在项目中添加相关的依赖项,那么让gem升高是更好的做法吗?

1 个答案:

答案 0 :(得分: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本身时使用,但在通过捆绑程序安装gem时不会“传递”。

  

如果担心,让宝石升起是否是更好的做法   依赖项不是由用户添加到其项目中的吗?

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