Module: Dry::Core::Deprecations
- Defined in:
- lib/dry/core/deprecations.rb
Overview
An extension for issuing warnings on using deprecated methods.
Defined Under Namespace
Modules: Interface Classes: Tagged
Constant Summary collapse
- STACK =
-> { caller.find { |l| l !~ %r{(lib/dry/core)|(gems)} } }
Class Method Summary collapse
- .[](tag) ⇒ Object
-
.announce(name, msg, tag: nil, uplevel: nil) ⇒ Object
Wraps arguments with a standard message format and prints a warning.
- .deprecated_name_message(old, new = nil, msg = nil) ⇒ Object private
- .deprecation_message(name, msg) ⇒ Object private
-
.logger(output = $stderr) ⇒ Logger
Returns the logger used for printing warnings.
-
.set_logger!(output = $stderr) ⇒ Object
Sets a custom logger.
-
.warn(msg, tag: nil, uplevel: nil) ⇒ Object
Prints a warning.
Class Method Details
.[](tag) ⇒ Object
115 116 117 |
# File 'lib/dry/core/deprecations.rb', line 115 def [](tag) Tagged.new(tag) end |
.announce(name, msg, tag: nil, uplevel: nil) ⇒ Object
Wraps arguments with a standard message format and prints a warning
51 52 53 54 55 56 57 |
# File 'lib/dry/core/deprecations.rb', line 51 def announce(name, msg, tag: nil, uplevel: nil) # Bump the uplevel (if provided) by one to account for the uplevel calculation # taking place one frame deeper in `.warn` uplevel += 1 if uplevel warn((name, msg), tag: tag, uplevel: uplevel) end |
.deprecated_name_message(old, new = nil, msg = nil) ⇒ 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.
68 69 70 71 72 73 74 75 76 77 |
# File 'lib/dry/core/deprecations.rb', line 68 def (old, new = nil, msg = nil) if new (old, <<-MSG) Please use #{new} instead. #{msg} MSG else (old, msg) end end |
.deprecation_message(name, msg) ⇒ 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.
60 61 62 63 64 65 |
# File 'lib/dry/core/deprecations.rb', line 60 def (name, msg) <<-MSG #{name} is deprecated and will be removed in the next major version #{msg} MSG end |
.logger(output = $stderr) ⇒ Logger
Returns the logger used for printing warnings. You can provide your own with .set_logger!
85 86 87 88 89 90 91 |
# File 'lib/dry/core/deprecations.rb', line 85 def logger(output = $stderr) if defined?(@logger) @logger else set_logger!(output) end end |
.set_logger!(output) ⇒ Object .set_logger! ⇒ Object .set_logger!(logger) ⇒ Object
Sets a custom logger. This is a global setting.
105 106 107 108 109 110 111 112 113 |
# File 'lib/dry/core/deprecations.rb', line 105 def set_logger!(output = $stderr) if output.respond_to?(:warn) @logger = output else @logger = Logger.new(output).tap do |logger| logger.formatter = proc { |_, _, _, msg| "#{msg}\n" } end end end |
.warn(msg, tag: nil, uplevel: nil) ⇒ Object
Prints a warning
39 40 41 42 43 44 45 |
# File 'lib/dry/core/deprecations.rb', line 39 def warn(msg, tag: nil, uplevel: nil) caller_info = uplevel.nil? ? nil : "#{caller_locations(uplevel + 2, 1)[0]} " tag = "[#{tag || "deprecated"}] " hint = msg.gsub(/^\s+/, "") logger.warn("#{caller_info}#{tag}#{hint}") end |