如何根据Ruby的版本限制特定Ruby模块的加载

时间:2013-03-01 19:00:29

标签: ruby enumerable ruby-2.0

对Ruby 2.0中包含了对enumerables的懒惰评估: http://railsware.com/blog/2012/03/13/ruby-2-0-enumerablelazy/

我想在我正在编写的应用程序中包含这种表示法(.lazy),但是对于运行任何版本Ruby的人来说。但是,如果那个人正在运行Ruby 2.0,我想让本机实现接管。

这是我可能用作模板的项目: https://github.com/yhara/enumerable-lazy/blob/master/lib/enumerable/lazy.rb

如果Ruby的活动版本是<我将如何加载此模块? 2.0

1 个答案:

答案 0 :(得分:1)

请注意,yhara的版本已过时。你应该使用backports gem中的那个。它通过了MRI lazy的测试:

require 'backports/2.0.0/enumerable/lazy'
(1..42).lazy... # => works in all Rubies

只需使用像Enumerable.method_defined?(:lazy)这样的条件来了解您是否应该定义它(就像我在backports中所做的那样)