我为什么要将开发依赖项添加到我的gemspec中

时间:2011-08-08 16:44:43

标签: ruby rubygems

ruby​​gems想知道我的开发依赖是什么似乎是一个奇怪的特性,到目前为止,我从未看到它在运行gem测试时实际加载它们。

2 个答案:

答案 0 :(得分:13)

如果有人决定以任何理由破解你的宝石,例如他们将它分叉到Github上为它添加一个功能(他们可能想要贡献),如果他们知道你的gem需要哪些开发依赖(例如测试框架,模拟工具等),它会有所帮助。

如果您正在使用带有gemspec命令的bundler,它将挂钩您的gemspec依赖项并在运行时安装开发依赖项和运行时依赖项

bundle install

这样可以省去手动安装这些宝石的麻烦。

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)

对于其他人而言,这可能更多,而不是为了你自己。

答案 1 :(得分:3)

我的宝石通常有单元测试。此测试有时需要宝石,使用宝石不需要宝石。或许你需要额外的宝石才能生成部分宝石。


一旦我滥用开发依赖项来定义“可选依赖项”(我的gem的某些特定功能需要依赖,但“正常”使用不需要依赖)。

实施例: 我的应用程序提供了以文本或pdf格式导出文件的可能性。 pdf代使用prawn。所以大虾是一个依赖 - 但没有必要使用该应用程序,只有一个特定的功能需要它。

所以我没有将prawn添加到gem依赖项(这是没有必要的),而是添加到开发依赖项(它对gem来说很有用)。