gem的开发依赖项是否应重述所需的运行时依赖性?

时间:2013-01-09 17:07:38

标签: ruby rubygems dependency-management

我找不到任何关于此的文档。我的直觉是来自gemspec文件的add_development_dependency应该只列出开发和测试所需的其他依赖项,并且可以依赖于安装add_runtime_dependency指定的依赖项。

我很惊讶地发现gem test命令只安装开发依赖项,如果在测试期间需要任何运行时依赖项,则会失败。

是否只有gem test quirk或者开发依赖项是否总是重述所需的运行时依赖项,如下所示:

Gem::Specification.new do |s|
  # ...
  s.add_runtime_dependency 'rack'
  s.add_runtime_dependency 'net-http-persistent'
  s.add_development_dependency 'rack-test'
  s.add_development_dependency 'webmock'
  s.add_development_dependency 'rack'
  s.add_development_dependency 'net-http-persistent'
end

1 个答案:

答案 0 :(得分:4)

我认为gem test假设您在实际尝试测试之前已经安装了要测试的gem。

gem install whatever
gem test whatever

所有tests都表明情况就是这样 - 他们首先调用install_stub_gem,它会安装一个假的gem来运行gem test命令。

我从未见过gem将其所有运行时依赖项重复为开发依赖项,而docs的语言表明这样做是没有意义的:

  

开发依赖项

     

用于开发目的的宝石(强调我的)

因此,运行时依赖性的Gems也不适合此类别。