首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby迭代版本号

Ruby迭代版本号
EN

Stack Overflow用户
提问于 2017-01-16 18:25:13
回答 2查看 1K关注 0票数 1

我正在构建一个将gem部署到Rubygems的管道。普遍的共识是,它将读取github库中的更改,并迭代版本中的次要内容。我正在努力想出一个如何做到这一点的想法,就像现在的情况一样,makefile将用于执行迭代version.rb文件的操作:

例如:make deploy update=minor

或者类似的东西,但我不确定如何以“ruby”的方式迭代文件,而不是试图修改它,就像它只是另一个文本文件一样。

当前版本的文件如下所示:

代码语言:javascript
复制
module Pugin
  release_no = 0
  patch_no = 1
  hotfix_no = 0
  VERSION = release_no.to_s + "." + patch_no.to_s + "." + hotfix_no.to_s
end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-16 18:55:09

没有理由重新发明轮子,有Gem::Version

代码语言:javascript
复制
require 'rubygems/version.rb'
#⇒ false
gv = Gem::Version.new "1.0.2.a"
#⇒ #<Gem::Version "1.0.2.a">
gv.segments
#⇒ [1, 0, 2, "a"]
gv.release
#⇒ #<Gem::Version "1.0.2">
gv.bump
#⇒ #<Gem::Version "1.1">

我相信你已经明白了。

票数 6
EN

Stack Overflow用户

发布于 2017-01-16 18:37:13

最简单的方法可能是将纯版本移到文本文件中,然后在version.rb中读取它

version.txt:

代码语言:javascript
复制
"1.2.3"

pugin.rb:

代码语言:javascript
复制
module Pugin
  VERSION = File.read("version.txt").split("\n").first
end

要增加版本,请使用一个分析版本的ruby脚本:

代码语言:javascript
复制
major, minor, patch = File.read("version.txt").
                           split("\n").
                           first.
                           split(".").
                           map(&:to_i)

然后,您可以轻松地递增所需的部分,并将其写回文件

代码语言:javascript
复制
minor += 1
File.open("version.txt", "wb") {|f| f.write("#{major}.#{minor}.#{patch}")}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41674205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档