代码之家  ›  专栏  ›  技术社区  ›  lambshaanxy

将Jeweler的gem版本与程序本身的版本字符串同步

  •  2
  • lambshaanxy  · 技术社区  · 14 年前

    所以我用 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 回复  |  直到 14 年前
        1
  •  4
  •   Peer Allan    14 年前

    为什么不让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
    

    编辑(回应评论):

    此外,还必须更新Rakefile才能使用常量:

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

    同龄人

    推荐文章