Module: RubyEventStore::Deprecations
- Defined in:
- lib/ruby_event_store/deprecations.rb
Class Method Summary collapse
- .deprecate(klass, method_name, key:) ⇒ Object
- .deprecate_class_method(klass, method_name, key:) ⇒ Object
- .register(key, message) ⇒ Object
- .reset! ⇒ Object
- .suppress(key) ⇒ Object
- .warn(key, message: nil) ⇒ Object
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, ) @warnings[key] = 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] #{ || @warnings.fetch(key) { raise KeyError, "Deprecation :#{key} not registered. Call Deprecations.register first." }}", ) end |