Module: Faker::Deprecator

Included in:
Faker, Faker, JapaneseMedia
Defined in:
lib/helpers/deprecator.rb

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/helpers/deprecator.rb', line 9

def self.included(base)
  extension = Module.new do
    def const_missing(missing_const_name)
      if class_variable_defined?(:@@_deprecated_constants) && (replacement = class_variable_get(:@@_deprecated_constants)[missing_const_name.to_s])
        $stdout.puts("DEPRECATION WARNING: #{name}::#{replacement[:old_generator]} is deprecated. Use #{replacement[:new_constant]} instead.")
        return replacement[:new_constant]
      end

      super
    end

    def deprecate_generator(old_generator_name, new_generator_constant)
      class_variable_set(:@@_deprecated_constants, {}) unless class_variable_defined?(:@@_deprecated_constants)
      class_variable_get(:@@_deprecated_constants)[old_generator_name] = { new_constant: new_generator_constant, old_generator: old_generator_name }
    end
  end

  base.singleton_class.prepend extension
end