Sha256: b4fdd839ad0d66256d6ca7abdf97459308a78831a67fcf08110fd239caaa7ccf

Contents?: true

Size: 970 Bytes

Versions: 11

Compression:

Stored size: 970 Bytes

Contents

# typed: strong

# Copyright (c) 2015 Sqreen. All Rights Reserved.
# Please refer to our terms for more information: https://www.sqreen.com/terms.html

require 'sqreen/log/loggable'

module Sqreen
  module Deprecation
    include Sqreen::Log::Loggable

    module_function

    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
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
sqreen-1.22.0-java lib/sqreen/deprecation.rb
sqreen-1.22.0 lib/sqreen/deprecation.rb
sqreen-1.21.1-java lib/sqreen/deprecation.rb
sqreen-1.21.1 lib/sqreen/deprecation.rb
sqreen-1.21.0-java lib/sqreen/deprecation.rb
sqreen-1.21.0 lib/sqreen/deprecation.rb
sqreen-1.20.4-java lib/sqreen/deprecation.rb
sqreen-1.20.4 lib/sqreen/deprecation.rb
sqreen-1.21.0.beta3-java lib/sqreen/deprecation.rb
sqreen-1.21.0.beta3 lib/sqreen/deprecation.rb
sqreen-1.20.4.beta1 lib/sqreen/deprecation.rb