Sha256: b20841b95b28bb963f1d65e8bb6fae08805613434cd6536a00a7e62ccb868f5c

Contents?: true

Size: 970 Bytes

Versions: 10

Compression:

Stored size: 970 Bytes

Contents

# typed: ignore

# 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

10 entries across 10 versions & 1 rubygems

Version Path
sqreen-1.25.1 lib/sqreen/deprecation.rb
sqreen-1.25.0 lib/sqreen/deprecation.rb
sqreen-1.24.3 lib/sqreen/deprecation.rb
sqreen-1.24.2 lib/sqreen/deprecation.rb
sqreen-1.24.1 lib/sqreen/deprecation.rb
sqreen-1.24.0 lib/sqreen/deprecation.rb
sqreen-1.23.2 lib/sqreen/deprecation.rb
sqreen-1.23.1 lib/sqreen/deprecation.rb
sqreen-1.23.0 lib/sqreen/deprecation.rb
sqreen-1.22.1 lib/sqreen/deprecation.rb