将珠宝商的宝石版本与程序本身的版本字符串同步

时间:2010-11-29 00:46:51

标签: ruby rubygems versioning

所以我使用Jeweler来维护little gem of mine,它提供了一组方便的rake version:*任务来管理版本号。 Jeweler显然将版本号存储在名为VERSION的文件中,然后在rake gemspec上读取。唯一的问题是,库中的实际Ruby代码包含一个版本,例如。在库创建的HTTP请求标头中发送:

module MediaWiki
  class << self
    def version
      "0.1.6"
    end
    ...

有关保持这两者自动同步的任何想法吗?或者,是否有某种方式MediaWiki库可以查询它变成的gem以找到自己的版本?

1 个答案:

答案 0 :(得分:4)

为什么你没有版本方法返回常量?

# lib/media_wiki/version.rb
module MediaWiki
  VERSION = "1.0.6"
end

# lib/media_wiki.rb (or wherever)
module MediaWiki
  class << self
    def version
      MediaWiki::VERSION
    end
  end
end

编辑(回应评论):

此外,您还必须更新您的Rakefile以使用常量:

# Rakefile
Jeweler::Tasks.new do |gemspec|
  ...
  gemspec.version     = MediaWiki::VERSION
  ...
end

对等