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_VERSION < 1.8.7
したがって、RUBY_PLATFORM == "java" (または)の場合にこの機能を追加するイニタライザーを定義することを考えています。
これまでのところ、私は得ました(原因の無効なコード):
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