Ruby 同步珠宝商&x27;程序本身中包含版本字符串的gem版本

Ruby 同步珠宝商&x27;程序本身中包含版本字符串的gem版本,ruby,rubygems,versioning,Ruby,Rubygems,Versioning,所以我使用来维护,它提供了一组方便的rake版本:任务来管理版本号。Jeweler显然将版本号存储在名为version的文件中,然后在rake gempec上读取该文件。唯一的问题是,库中实际的Ruby代码还包含一个版本,例如,在库创建的HTTP请求头中发送: module MediaWiki class << self def version "0.1.6" end ... 模块MediaWiki 类为什么不让version方法返回一个常量

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

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

类为什么不让version方法返回一个常量

# 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

Peer

我可以,但是这个常数怎么能与Jeweler的版本保持同步呢?编辑了这篇文章来回答这个问题。太棒了!(回想起来很明显……叹气。)我将无法再使用rake版本:bump:*任务,但这是两个邪恶中较小的一个。
# Rakefile
Jeweler::Tasks.new do |gemspec|
  ...
  gemspec.version     = MediaWiki::VERSION
  ...
end