Class: ActiveSupport::Deprecation

Inherits:
Object
  • Object
show all
Defined in:
lib/maglev_record/maglev_support/active_support_patch.rb

Class Method Summary collapse

Class Method Details

.deprecate_methods(target_module, *method_names) ⇒ Object

Declare that a method has been deprecated.



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/maglev_record/maglev_support/active_support_patch.rb', line 4

def deprecate_methods(target_module, *method_names)
  options = method_names.extract_options!
  method_names += options.keys
  method_names.each do |method_name|
    next unless method_name.respond_to?(:to_sym)  # next if Fixnum
    next if method_name == :none                  # check from rubygems/deprecate.rb
    next if method_name.to_s.include?(".")             # . in method names is not allowed
    # workaround for :==
    if method_name.to_sym == :==
      method_name = "equal?"
    end
    target_module.alias_method_chain(method_name, :deprecation) do |target, punctuation|
      target_module.module_eval("        def \#{target}_with_deprecation\#{punctuation}(*args, &block)\n          ::ActiveSupport::Deprecation.warn(\n            ::ActiveSupport::Deprecation.deprecated_method_warning(\n              :\#{method_name},\n              \#{options[method_name].inspect}),\n            caller\n          )\n          send(:\#{target}_without_deprecation\#{punctuation}, *args, &block)\n        end\n      end_eval\n    end\n  end\nend\n", __FILE__, __LINE__ + 1)