【问题标题】:Ruby version select/detect in fileRuby 版本在文件中选择/检测
【发布时间】:2014-02-24 23:02:31
【问题描述】:

我最近尝试修复 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

事实上,有没有更好的方法来实现这一点?我发现这个很弱,不太友好。

【问题讨论】:

  • “我发现这个很弱,不太友好。”怎么样?
  • 我认为 [Here][1] 是您所要求的。 [1]:stackoverflow.com/questions/1589751/…
  • @Emu,是的,我知道这一点,但我想要求更好地实施决心。
  • @Emu,我认为您的链接格式仅适用于 q 和 a。见this

标签: ruby version


【解决方案1】:

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

hfiles.puts "#define RUBY_2 1"         if RUBY_VERSION >= '2.0'
hfiles.puts "#define OLD_RB_SCAN_ARGS" if RUBY_VERSION <  '1.9.3'

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

【讨论】:

  • 这似乎不能准确比较版本号 ('2.0.0' > '2.0' => true)
  • 好点,@eradman 应该编辑答案以使用 Gem::Version.new 或类似的东西。随意编辑,否则我稍后会自己做。
  • 我已经使用 RUBY_VERSION[0..2].to_f > 2.0 来检测主要版本,但是我不知道有一种简洁的方式来表达
  • 这个堆栈溢出解决了这个问题......注意非常流行的答案stackoverflow.com/questions/2051229/…
猜你喜欢
  • 1970-01-01
  • 2010-09-09
  • 1970-01-01
  • 2013-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多