Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 增加一个版本';最后一部分_Ruby - Fatal编程技术网

Ruby 增加一个版本';最后一部分

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

将版本的最后一部分增加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| 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:)