2

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

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

它只是gem test怪癖还是应该开发依赖项总是重述所需的运行时依赖项,如下所示:

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

?

4

1 回答 1

4

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

gem install whatever
gem test whatever

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

我从未见过 gem 将其所有运行时依赖项复制为开发依赖项,并且文档的语言表明这样做没有意义:

开发依赖

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

因此,也是运行时依赖项的 Gem 不属于此类别。

于 2013-01-09T18:21:05.050 回答