通常有一个version.rb文件,定义gem的版本,如:
module Foo
VERSION = "0.0.1"
end
并在.gemspec文件中,需要version.rb并在那里使用Foo :: VERSION。
这项惯例有什么好处?
-
此外,有时使用命名空间时,生成的verison文件可以深入嵌套文件夹中。将version.rb直接放在lib /并在那里指定版本会不会更容易?
答案 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
文件。