@Dgeremmi

Почему method_missing не срабатывает для method('какой-то несуществующий метод').call?

Привет,
В ruby есть специальный метод method_missing, на случай попытки вызова метода, который не существует. Т.е. в такой ситуации
class SampleClass
  attr_accessor :something
  def initialize(something)
    @something = something
  end
  def method_missing(m,*args,&block)
    p "#{m} doesn't exist"
  end
end

e = SampleClass.new("wazzup!!")
p e.something #выведет wazzup!!
p e.foo #вызовет исключение NoMethodError и вызовет метод method_missing, выведет foo doesn't exist
e.method("foo").call #ошибка undefined method 'foo'. method_missing не срабатывает

Почему не срабатывает method_missing в последней строке?
Версия ruby 1.9.3
Спасибо.
  • Вопрос задан
  • 2446 просмотров
Решения вопроса 1
amerov
@amerov
Web Developer
попробуйте e.send(:foo)
method - это метод класса Kernel
похоже что, в таком случае method_missing не участвует в стеке вызовов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы