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

标签 ruby rubygems versioning

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

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

有什么想法可以让这两者自动同步吗?或者,MediaWiki 库是否可以通过某种方式查询它所变成的 gem 以找到自己的版本?

最佳答案

为什么不让版本方法返回一个常量?

# 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

同行

关于ruby - 将 Jeweler 的 gem 版本与程序本身的版本字符串同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4300062/

相关文章:

ruby-on-rails - Rails 4 审计 Gem

ruby - 将 Sorbet RBI 添加到 gem 的目录结构是什么?

events - CQRS 中的事件版本控制

ruby-on-rails - rails 路线。这个过程是如何明确地工作的?

ruby - 使用模块中定义的类方法在同一模块中扩展类

ruby-on-rails - 加载错误 : cannot load such file -- gemname/base

tags - 在 GitHub Actions 中添加基于日期的标签

python - Sphinx 中尖括号旁边的替换

ruby - 如何在 Ruby 中重新定义 Fixnum 的 + (plus) 方法并保留原始 + 功能?

rubygems - 如何在 Rails 应用程序中查看新遗迹中的 mongoid 查询