目前正在开发一个扩展spec功能的gem(它需要factory_bot
),如何在add_runtime_dependency中仅为相关组(这里,:test
)定义它?
或者,如果用户在其项目中没有添加相关的依赖项,那么让gem增加是一种更好的做法吗?
如果您的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)。用它。