Module: Gemvault::Deprecation

Defined in:
lib/gemvault/deprecation.rb

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

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.outputObject



11
12
13
# File 'lib/gemvault/deprecation.rb', line 11

def output
  @output ||= $stderr
end

Class Method Details

.reset!Object



34
35
36
37
# File 'lib/gemvault/deprecation.rb', line 34

def reset!
  @seen = []
  @silenced = false
end

.silenceObject



22
23
24
25
26
27
28
# File 'lib/gemvault/deprecation.rb', line 22

def silence
  previous = @silenced
  @silenced = true
  yield
ensure
  @silenced = previous
end

.silenced?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/gemvault/deprecation.rb', line 30

def silenced?
  @silenced || ENV.key?(ENV_KEY)
end

.warn_once(message) ⇒ Object



15
16
17
18
19
20
# File 'lib/gemvault/deprecation.rb', line 15

def warn_once(message)
  return if silenced? || seen.include?(message)

  seen << message
  output.puts("gemvault: #{message}")
end