文件中的Ruby版本选择/检测
我最近试图修复SciRuby的一些bug,发现在文件中的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” 结束 如果
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的概念此堆栈溢出解决了此问题。。。注意这个非常流行的答案