我试图测试我的rails应用程序JavaScript使用jruby 1.3.1,迅速和culerity。 应用程序本身下红宝石1.8.7 + PHUSION客运运行(和运行正常,SANS测试:))仿真each_slice无红宝石块<1.8.7
安装的一切明智的工作正常,但我的应用程序使用some_enumerable.each_slice(10)
到更大的阵列分裂成更小的子阵列,每组10个elelents 。
Celerity需要jruby和jruby只是红宝石1.8.6兼容,因此不支持无块each_slice。
所以我想定义initalizer这增加了这个功能,如果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
DOH! :)应该先搜索一下 – thenoseman