Я пытался понять этот вызов:
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?
все еще доступен, но выдает предупреждение при его использовании? Кто-нибудь хотел бы объяснить, как это работает?