Module: RubyEventStore::Deprecations

Defined in:
lib/ruby_event_store/deprecations.rb

Class Method Summary collapse

Class Method Details

.deprecate(klass, method_name, key:) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/ruby_event_store/deprecations.rb', line 29

def deprecate(klass, method_name, key:)
  warn_key = key
  is_private = klass.private_method_defined?(method_name)
  this = self
  wrapper =
    Module.new do
      define_method(method_name) do |*args, **kwargs, &block|
        this.warn(warn_key)
        super(*args, **kwargs, &block)
      end
      private(method_name) if is_private
    end
  klass.prepend(wrapper)
end

.deprecate_class_method(klass, method_name, key:) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/ruby_event_store/deprecations.rb', line 44

def deprecate_class_method(klass, method_name, key:)
  warn_key = key
  this = self
  wrapper =
    Module.new do
      define_method(method_name) do |*args, **kwargs, &block|
        this.warn(warn_key)
        super(*args, **kwargs, &block)
      end
    end
  klass.singleton_class.prepend(wrapper)
end

.register(key, message) ⇒ Object



12
13
14
# File 'lib/ruby_event_store/deprecations.rb', line 12

def register(key, message)
  @warnings[key] = message
end

.reset!Object



57
58
59
60
# File 'lib/ruby_event_store/deprecations.rb', line 57

def reset!
  @suppressions = Set.new
  @emitted = Set.new
end

.suppress(key) ⇒ Object



16
17
18
# File 'lib/ruby_event_store/deprecations.rb', line 16

def suppress(key)
  @suppressions << key
end

.warn(key, message: nil) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/ruby_event_store/deprecations.rb', line 20

def warn(key, message: nil)
  return if @suppressions.include?(key)
  return if @emitted.include?(key)
  @emitted << key
  Kernel.warn(
    "[DEPRECATION] #{message || @warnings.fetch(key) { raise KeyError, "Deprecation :#{key} not registered. Call Deprecations.register first." }}",
  )
end