Module: Aws::Deprecations Private

Included in:
Resources::Collection
Defined in:
lib/aws-sdk-core/deprecations.rb

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

A utility module that provides a class method that wraps a method such that it generates a deprecation warning when called. Given the following class:

class Example

  def do_something
  end

end

If you want to deprecate the ‘#do_something` method, you can extend this module and then call `deprecated` on the method (after it has been defined).

class Example

  extend Aws::Deprecations

  def do_something
  end

  def do_something_else
  end

  deprecated :do_something

end

The ‘#do_something` method will continue to function, but will generate a deprecation warning when called.

Instance Method Summary collapse

Instance Method Details

#deprecated(method, options = {}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • method (Symbol)

    The name of the deprecated method.

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :message (String)

    The warning message to issue when the deprecated method is called.

  • :use (String)

    The name of a method that should be used.

  • :version (String)

    The version that will remove the deprecated method.

[View source]

50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/aws-sdk-core/deprecations.rb', line 50

def deprecated(method, options = {})

  deprecation_msg = options[:message] || begin
    "#################### DEPRECATION WARNING ####################\n"\
    "Called deprecated method `#{method}` of #{self}."\
    "#{" Use `#{options[:use]}` instead.\n" if options[:use]}"\
    "#{"Method `#{method}` will be removed in #{options[:version]}."\
      if options[:version]}"\
    "\n#############################################################"
  end

  alias_method(:"deprecated_#{method}", method)

  warned = false # we only want to issue this warning once

  define_method(method) do |*args, &block|
    unless warned
      warned = true
      warn(deprecation_msg + "\n" + caller.join("\n"))
    end
    send("deprecated_#{method}", *args, &block)
  end
end