我正在尝试使用 jruby 1.3.1、celerity 和 culerity 测试我的 rails 应用程序 javascript。应用程序本身在 ruby 1.8.7 + phusion 乘客下运行(并且运行良好,没有测试:))
一切安装方式都可以正常工作,但我的应用程序用于some_enumerable.each_slice(10)
将较大的数组拆分为较小的子数组,每个子数组有 10 个元素。
Celerity 需要 jruby,而 jruby 仅兼容 ruby 1.8.6,因此不支持无块 each_slice。
所以我正在考虑定义一个初始化器,如果 RUBY_PLATFORM == "java" (或RUBY_VERSION < 1.8.7
)添加这个功能
到目前为止,我得到了(已失效的原因代码):
if true #ruby 1.8.6
module Enumerable
alias_method :original_each_slice, :each_slice
def each_slice(count, &block)
# call original method in 1.8.6
if block_given?
original_each_slice(count, block)
else
self.enum_for(:original_each_slice, count).to_a
end
end
end
end
这段代码显然不起作用,我非常感谢有人指出我的解决方案。
谢谢!
更新: 感谢 sepp2k 指出我的错误的解决方案:
if RUBY_VERSION < "1.8.7"
require 'enumerator'
module Enumerable
alias_method :original_each_slice, :each_slice
def each_slice(count, &block)
if block_given?
# call original method when used with block
original_each_slice(count, &block)
else
# no block -> emulate
self.enum_for(:original_each_slice, count)
end
end
end
end