rubygems想要知道我的开发依赖项是什么,这似乎是一个奇怪的功能,到目前为止,我从未见过它用于在运行gem测试时实际加载这些
如果有人出于某种原因决定破解你的gem,例如他们在Github上分叉它以添加一个功能(他们可能想贡献),如果他们知道你的gem需要什么开发依赖(例如测试框架,mock工具等),这将有所帮助。
如果你在gemspec
命令中使用捆绑器,当你运行
bundle install
这样你就不用手动安装这些gem了。
gem命令还可以列出gem的所有依赖项,包括开发依赖项:
gem dependency my_gem
Gem my_gem-0.1.3
activerecord (~> 3.0.0)
json (~> 1.4.3, development)
rake (>= 0, development)
rspec (~> 2.5.0, development)
ruby-openid (~> 2.1.0)
再说一遍,这可能更适合别人而不是你自己。
我的宝石通常进行单元测试。这个测试有时需要宝石,这是不需要使用宝石。或者你可能需要额外的宝石来生成宝石的一部分。
有一次我误用了开发依赖来定义"可选依赖"(依赖对于我的gem的某些特定功能是必需的,但对于"正常"使用来说不是必需的)。
的例子:我的应用程序提供了导出为文本或pdf文件的可能性。pdf生成使用对虾。因此,prawn是一个依赖项,但它不是使用应用程序所必需的,只有特定的功能需要它。
所以我没有将prawn添加到gem依赖项(这是不必要的),而是添加到开发依赖项(它对gem很有用)。
RubyGems对这个问题的文档回答如下:
开发依赖关系是有用的,当有人想要做修改你的宝石。当您指定开发依赖项时,另一个开发人员可以运行gem install——dev your_gem, RubyGems会这样做获取两组依赖项(运行时和开发)。典型的开发依赖包括测试框架和构建系统。
例如,我可以指定spec.add_development_dependency 'minitest'
在gem install
命令中添加--dev
标志将自动拉入minitest
gem。这个特性使另一个开发人员不必手动识别和安装开发所需的gem。