我正在构建一个将gem部署到Rubygems的管道。普遍的共识是,它将读取github库中的更改,并迭代版本中的次要内容。我正在努力想出一个如何做到这一点的想法,就像现在的情况一样,makefile将用于执行迭代version.rb文件的操作:
例如:make deploy update=minor
或者类似的东西,但我不确定如何以“ruby”的方式迭代文件,而不是试图修改它,就像它只是另一个文本文件一样。
当前版本的文件如下所示:
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发布于 2017-01-16 18:55:09
没有理由重新发明轮子,有Gem::Version
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">我相信你已经明白了。
发布于 2017-01-16 18:37:13
最简单的方法可能是将纯版本移到文本文件中,然后在version.rb中读取它
version.txt:
"1.2.3"pugin.rb:
module Pugin
VERSION = File.read("version.txt").split("\n").first
end要增加版本,请使用一个分析版本的ruby脚本:
major, minor, patch = File.read("version.txt").
split("\n").
first.
split(".").
map(&:to_i)然后,您可以轻松地递增所需的部分,并将其写回文件
minor += 1
File.open("version.txt", "wb") {|f| f.write("#{major}.#{minor}.#{patch}")}https://stackoverflow.com/questions/41674205
复制相似问题