Я пытался понять этот призыв:
deprecate :new_record?, :new?
который использует этот устаревший метод:
def deprecate(old_method, new_method)
class_eval <<-RUBY, __FILE__, __LINE__ + 1
def #{old_method}(*args, &block)
warn "\#{self.class}##{old_method} is deprecated," +
"use \#{self.class}##{new_method} instead"
send(#{new_method.inspect}, *args, &block)
end
RUBY
end
Я не очень понимаю метапрограммирование, которое здесь используется. Но является ли это просто еще одним способом псевдонимов метода new_record?, так что, по сути, new_record? все еще доступен, но выдает предупреждение при его использовании? Кто-нибудь хочет объяснить, как это работает?