module Sqreen::Deprecation

Public Instance Methods

deprecate(method) click to toggle source
# File lib/sqreen/deprecation.rb, line 14
def deprecate(method)
  return unless ENV['SQREEN_DEBUG_DEPRECATION']

  owner = method.owner
  deprecated = :"_deprecated_#{method.name}"
  klass = owner.is_a?(Module)
  target = klass ? owner.to_s : owner.class.to_s

  method.owner.instance_eval do
    alias_method deprecated, method.name

    define_method(method.name) do |*args, &block|
      msg = [
        "deprecation",
        "target:#{target}",
        "method:#{method.name}",
        "caller:#{Kernel.caller_locations[0]}",
      ].join(' ')
      Sqreen::Deprecation.logger.info(msg)
      send(deprecated, *args, &block)
    end
  end
end