Module: Gemvault::Deprecation
Overview
Emits deprecation notices once per unique message, to a configurable IO (stderr in production). Silenceable per-block or via an environment opt-out so automated pipelines that consume a legacy vault are not spammed.
Constant Summary collapse
- ENV_KEY =
"GEMVAULT_SILENCE_DEPRECATIONS".freeze
Instance Attribute Summary collapse
Instance Method Summary collapse
Instance Attribute Details
#output ⇒ Object
12 13 14 |
# File 'lib/gemvault/deprecation.rb', line 12 def output @output ||= $stderr end |
Instance Method Details
#reset! ⇒ Object
37 38 39 40 |
# File 'lib/gemvault/deprecation.rb', line 37 def reset! @seen = Set.new @silenced = false end |
#silence ⇒ Object
23 24 25 26 27 28 29 30 31 |
# File 'lib/gemvault/deprecation.rb', line 23 def silence previous = @silenced @silenced = true begin yield ensure @silenced = previous end end |
#silenced? ⇒ Boolean
33 34 35 |
# File 'lib/gemvault/deprecation.rb', line 33 def silenced? @silenced || ENV.key?(ENV_KEY) end |
#warn_once(message) ⇒ Object
16 17 18 19 20 21 |
# File 'lib/gemvault/deprecation.rb', line 16 def warn_once() return if silenced? return unless seen.add?() output.puts("gemvault: #{}") end |