Ruby gem中version.rb的好处是什么?

时间:2014-04-10 04:21:01

标签: ruby gem

通常有一个version.rb文件,定义gem的版本,如:

module Foo
  VERSION = "0.0.1"
end

并在.gemspec文件中,需要version.rb并在那里使用Foo :: VERSION。

这项惯例有什么好处?

-

此外,有时使用命名空间时,生成的verison文件可以深入嵌套文件夹中。将version.rb直接放在lib /并在那里指定版本会不会更容易?

3 个答案:

答案 0 :(得分:4)

这样做是为了减少.gemspec文件的流失(变化率)。我认为依赖变化比版本颠簸(更常见)更重要。所以版本更改会增加太多噪音并隐藏重要的提交。

答案 1 :(得分:3)

简而言之,如果您的gem不需要知道当前版本本身,那么您不需要version.rb。甚至像rack这样的一些着名宝石都不使用它。

假设您正在构建一个包含选项-v的可执行gem以查看当前版本,或者您必须打印当前版本以警告开发人员有一些已弃用的更改,然后到require a分离的版本文件比解析gemspec更方便有效。

这只是Ruby社区的惯例。 version.rb无处不在的主要原因是bundler gem构建了许多宝石。

答案 2 :(得分:2)

这取决于您使用的gem构建器。例如,使用单独的文件可以轻松地进行stomp和重建,因为您可以使用rake任务来修改版本号。这比摆弄源文件并且不会损坏任何东西容易得多。

某些打包商使用单独的VERSION文件。