我正在编写一个我希望在多个Ruby版本中工作的gem,这是最好的方法吗?天真的解决方案是做这样的事情
if RUBY_VERSION <= 1.8.7
my_hash = {:a => 1}
elsif RUBY_VERSION >= 1.9.3
my_hash = {a: 1}
...
end
什么是让gem支持多个Ruby版本的最佳方法?
答案 0 :(得分:2)
Ruby&gt; 1.9.3仍然支持旧的哈希语法。如果您需要支持1.8.7并且您唯一的问题是散列文字,那么优雅的解决方案是专门使用旧语法。这样你可以放弃任何条件。
答案 1 :(得分:1)
您可以在lib
目录中的不同文件上编写两个版本的gem,并在主文件上根据Ruby版本加载其中任何一个。
主档案(foo_gem / lib / foo.rb)
if RUBY_VERSION <= 1.8.7
require_relative "./foo-ruby1.8.7"
elsif RUBY_VERSION >= 1.9.3
require_relative "./foo-ruby1.9.3"
end