Без MWE мне сложно проанализировать вашу проблему.Возможно, я нашел первый намек на вашу проблему.
Я пытался восстановить ошибку, но безуспешно:
class Object
alias_method :old_send, :send
def send *args
old_send *args
end
end
n = 5
puts n.send(:*, 2)
Я получаю 10
.
Но сБлоки У меня проблема:
puts n.send(:times){ |i| p i } #-> #<Enumerator:0xb778a8>
С небольшой модификацией вы можете увидеть, что происходит:
class Object
alias_method :old_send, :send
def send *args
puts "send called with #{args}" #--> [:times]
old_send *args
end
end
n = 5
n.send(:times){ |i| p i }
Вы получите
send called with [:times]
Блок отсутствует.Вы должны добавить параметр proc к своему переопределению:
class Object
alias_method :old_send, :send
def send *args, &proc
old_send *args, &proc
end
end
n = 5
n.send(:times){ |i| p i } #-> 1 2 3 4 5