Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/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_Version - Fatal编程技术网

文件中的Ruby版本选择/检测

文件中的Ruby版本选择/检测,ruby,version,Ruby,Version,我最近试图修复SciRuby的一些bug,发现在extconf.rb中,它试图检测Ruby版本并执行不同的工作,如下所示: if RUBY_VERSION >= '2.0' hfiles.puts "#define RUBY_2 1" end if RUBY_VERSION < '1.9.3' hfiles.puts "#define OLD_RB_SCAN_ARGS" end 如果RUBY_版本>='2.0' hfiles.puts“#定义RUBY_2 1” 结束 如果

我最近试图修复SciRuby的一些bug,发现在
extconf.rb
中,它试图检测Ruby版本并执行不同的工作,如下所示:

if RUBY_VERSION >= '2.0'
  hfiles.puts "#define RUBY_2 1"
end

if RUBY_VERSION < '1.9.3'
  hfiles.puts "#define OLD_RB_SCAN_ARGS"
end
如果RUBY_版本>='2.0'
hfiles.puts“#定义RUBY_2 1”
结束
如果RUBY_版本<'1.9.3'
hfiles.puts“#定义旧的_RB_SCAN_ARGS”
结束
事实上,有没有更好的方法来实现这一点?我发现这一个很弱,不太友好。

我不确定为什么它是“弱”的,而且很清楚,尽管更常见的方法是使用尾部条件句

hfiles.puts "#define RUBY_2 1"         if RUBY_VERSION >= '2.0'
hfiles.puts "#define OLD_RB_SCAN_ARGS" if RUBY_VERSION <  '1.9.3'
hfiles.put“#定义RUBY_2 1”如果RUBY_版本>='2.0'
如果RUBY版本<'1.9.3'

它的工作原理完全相同,但更紧凑。

“我发现这一个很弱,也不太友好。”怎么会这样?我想[这里][1]是你想要的。[1] :@Emu,是的,我知道这一点,但我想要求更好地实现决心。@Emu,我认为你的链接格式只适用于q和a。请参阅。这似乎不是比较版本号(“2.0.0'>'2.0'=>true)的准确方法。很好,@eradman应该编辑答案以使用Gem::version.new或类似的工具。请随意编辑,或者稍后我自己做。我使用了RUBY_版本[0..2]。to_f>2.0检测主要版本,但我不知道有什么干净的方法来表达<1.9.3的概念此堆栈溢出解决了此问题。。。注意这个非常流行的答案