Ruby勉強

インターネットの企画職な人がプログラミングを勉強するブログ

Ruby 古いメソッドを呼び出された場合

古いメソッドを警告を出しながらも実行する方法

module Deprecator
  def deprecate(old_method, new_method)
    define_method(old_method) do |*args,&block|
      warn "Warning: #{old_method} is deprecated. Use #{new_method}()"
      __send__(new_method,*args,&block)
    end
  end
end
class A
  extend Deprecator
  def new_fuga
    "hello"
  end
  deprecate :old_fuga, :new_fuga
end
p A.new.old_fuga #=> Warning: old_fuga is deprecated. Use new_fuga()