Ruby 增加一个版本';最后一部分
将版本的最后一部分增加1(不使用库)的最佳方法是什么 示例:Ruby 增加一个版本';最后一部分,ruby,Ruby,将版本的最后一部分增加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”) 如果输出是字符串,也可以使用Gem::Version#segments: Gem::Version.new("2.0.31"). segments. dup. tap { |segments| segmen
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”)
如果输出是字符串,也可以使用Gem::Version#segments
:
Gem::Version.new("2.0.31").
segments.
dup.
tap { |segments| segments.push(segments.pop.succ) }.
join('.')
#⇒ "2.0.32"
这里有一个助手方法,我以前在
rake
任务中使用过,用于版本缓冲
请根据您的需要随意扩展,例如,如果您想添加第四个数字;或支持名为alpha-x
或pre-x
的版本;或支持“碰撞最后一个数字”选项(无论有多少个数字)
然而,我倾向于不支持“bump the last digit”选项,因为这是非常模糊的
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"
按
拆分,取最后一个
,将其转换为一个整数,使用to_i
,递增,再次连接零件。你说的“不使用图书馆”是什么意思还不太清楚<代码>Gem::Version是一个库,您是否试图删除该代码,而只使用字符串?我认为您的“不使用库”限制太严格了。您需要至少使用RubyGems库中的Gem::Version#to_s
或Gem::Version#Version
,以便在增加当前版本之前知道它是什么。(当然,如果没有核心库,您甚至不会得到字符串
或整数
)您的bump(“2.1.31”:minor)
是由Gem::Version#bump
本机实现的。不过,我没有使用Gem::Version
。这是处理普通的旧字符串。例如,您可以将其用于NPM包版本。我最好自杀,而不是处理NPM:)