【问题标题】:How do I limit loading of a particular Ruby module based on the version of Ruby如何根据 Ruby 版本限制特定 Ruby 模块的加载
【发布时间】:2013-03-07 00:55:12
【问题描述】:

Ruby 2.0 中包含了可枚举的惰性求值: 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 的活动版本为

【问题讨论】:

    标签: ruby enumerable ruby-2.0


    【解决方案1】:

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

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

    只需使用Enumerable.method_defined?(:lazy) 之类的条件即可知道您是否应该定义它(就像我在backports 中所做的那样)

    【讨论】:

    • @BobBriski:顺便说一句,我正在努力隔离每个反向端口,所以你可以只需要懒惰......
    猜你喜欢
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 2020-11-16
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多