需要根据安装的版本调用不同的Ruby方法

时间:2013-05-03 14:39:55

标签: ruby

我有一个Ruby脚本,它迭代文本文件的each行。

在Ruby 1.8。*中使用content.each do |line|工作正常,但在Ruby 1.9。*中不起作用,我需要使用content.each_line do |line|

由于这个脚本将被几个不同的人使用,我需要能够根据他们的Ruby版本使用正确的方法。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:3)

全局常量RUBY_VERSION包含当前运行的Ruby的版本。所以这个脚本会做你想要的:

if RUBY_VERSION < "1.9.2"
  # code for 1.8.7
else
  # code for 1.9.2+
end

如果each_line的内部代码与1.8.*1.9.*相等,则以下方法更为干燥:

each_selector = RUBY_VERSION < "1.9.2" ? :each : :each_line
content.send(each_selector) do | line|
   # ...
end