将版本的最后部分增加1(不使用库)的最佳方法是什么。
示例:
Gem::Version.new("2.0.31")
至Gem::Version.new("2.0.32")
Gem::Version.new("2.0.3.0")
至Gem::Version.new("2.0.3.1")
如果输出是字符串,那也没关系
答案 0 :(得分:2)
使用Gem::Version#segments
:
Gem::Version.new("2.0.31").
segments.
dup.
tap { |segments| segments.push(segments.pop.succ) }.
join('.')
#⇒ "2.0.32"
答案 1 :(得分:1)
这是我之前在rake
任务中使用的一种辅助方法,用于版本提升。
根据您的需要随意扩展它-例如如果要添加第四个数字;或支持名为alpha-x
或pre-x
的版本;或支持“跳最后一位”的选项(无论有多少位)。
但是,我倾向于不支持“加最后一位数字”选项,因为这很含糊。
def bump(version, type)
major, minor, patch = version.split('.').map(&:to_i)
bumped = case type
when :major
[major + 1, 0, 0]
when :minor
[major, minor + 1, 0]
when :patch
[major, minor, patch + 1]
else
raise "Don't know how to bump for #{type}"
end
bumped.join('.')
end
bump("2.1.31", :patch) #=> "2.1.32"
bump("2.1.31", :minor) #=> "2.2.0"
bump("2.1.31", :major) #=> "3.0.0"