J'essaie de tester mes applications rails javascript en utilisant jruby 1.3.1, célérité et culerity. L'application elle-même fonctionne sous Ruby 1.8.7 + passager Phusion (et fonctionne très bien, sans essai :))Émulation de each_slice sans bloc en ruby <1.8.7
Tout l'installation sage fonctionne très bien, mais mon application utilise some_enumerable.each_slice(10)
pour diviser un éventail plus large en sous-tableau plus petit avec 10 elelents chaque .
Celerity besoin de jruby et jruby est seulement ruby 1.8.6 compatible et par conséquent ne supporte pas un each_slice sans bloc.
Je pense à la définition d'une initalizer qui ajoute cette fonctionnalité si RUBY_PLATFORM == "java" (ou RUBY_VERSION < 1.8.7
)
loin je suis arrivé (le code de la cause défunte):
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
Ce code ne fonctionne évidemment pas et j'apprécierais vraiment que quelqu'un me pointe vers une solution.
Merci!
Mise à jour: Solution grâce à sepp2k me montrant mes erreurs:
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! :) Doit avoir cherché d'abord – thenoseman