Я пытаюсь протестировать мой javascript для rails-приложений, используя jruby 1.3.1, быстроту и ловкость.
Само приложение работает под ruby 1.8.7 + phusion passenger (и работает нормально, без теста :))
Все, что касается установки, работает нормально, но мое приложение использует some_enumerable.each_slice(10)
, чтобы разбить большой массив на меньший подмассив с 10 элементами каждый.
Для скорости требуется jruby, а jruby совместим только с ruby 1.8.6 и, следовательно, не поддерживает каждый безлимитный фрагмент.
Так что я думаю об определении инициализатора, который добавляет эту функцию, если 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