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

需要根据安装的版本调用不同的Ruby方法,ruby,Ruby,我有一个Ruby脚本,它在文本文件的每行上迭代 在Ruby 1.8.*中,使用content.each do | line |效果很好,但在Ruby 1.9.*中,这不起作用,我需要使用content.each|line do | 由于这个脚本将由几个不同的人使用,我需要能够根据他们的Ruby版本使用正确的方法 有办法做到这一点吗?全局常量RUBY\u VERSION包含当前运行的RUBY的版本。因此,此脚本将执行您想要的操作: if RUBY_VERSION < "1.9.2" #

我有一个Ruby脚本,它在文本文件的
每行上迭代

在Ruby 1.8.*中,使用
content.each do | line |
效果很好,但在Ruby 1.9.*中,这不起作用,我需要使用
content.each|line do |

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


有办法做到这一点吗?

全局常量
RUBY\u VERSION
包含当前运行的RUBY的版本。因此,此脚本将执行您想要的操作:

if RUBY_VERSION < "1.9.2"
  # code for 1.8.7
else
  # code for 1.9.2+
end
IO#每个
IO#每个#行
都是Ruby 1.8、1.9和2.0中彼此的别名。怎么了?@molf,很可能内容是一个字符串。Ruby 1.8每个都有字符串#;Ruby 1.9使用字符串#代替每行。
each_selector = RUBY_VERSION < "1.9.2" ? :each : :each_line
content.send(each_selector) do | line|
   # ...
end