Module: Gemvault::Deprecation

Extended by:
Deprecation
Included in:
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

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#outputObject



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

#silenceObject



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

Returns:

  • (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(message)
  return if silenced?
  return unless seen.add?(message)

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