Sha256: 3d679fb9344bca09403e2bbda9e33282317e776bd698e347dd4c2b276b3e4ba7

Contents?: true

Size: 972 Bytes

Versions: 2

Compression:

Stored size: 972 Bytes

Contents

module Timezone
  # This class provides a way to set a custom hook for deprecations.
  module Deprecate
    class << self
      # Set the custom deprecation callback. By default this
      # issues a deprecation warning.
      #
      # @param callback [#call] the custom callback
      #
      # @example Send a message to StatsD
      #   Timezone::Deprecate.callback = lambda do |klass, method, _|
      #     StatsD.increment(sanitize(klass, method))
      #   end
      #
      # @example Send a message to a custom logger
      #   Timezone::Deprecate.callback = lambda do |klass, method, msg|
      #     MyLogger.log("[#{klass} : #{method}] #{msg}")
      #   end
      attr_writer :callback

      # @!visibility private
      def callback
        @callback || -> (_, _, message) { warn(message) }
      end

      # @!visibility private
      def call(klass, method, message)
        callback && callback.call(klass, method, message)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
timezone-0.99.1 lib/timezone/deprecate.rb
timezone-0.99.0 lib/timezone/deprecate.rb