私はこの呼びかけを理解しようとしていました:
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?
はまだ利用可能ですが、使用すると警告が発行されますか?これがどのように機能するかを誰かが説明したいですか?