Class: Ivar::LogPolicy

Inherits:
Policy
  • Object
show all
Defined in:
lib/ivar/policies.rb

Overview

Policy that logs unknown instance variables to a logger

Instance Method Summary collapse

Methods inherited from Policy

#find_closest_match, #format_warning

Constructor Details

#initialize(logger: Logger.new($stderr)) ⇒ LogPolicy

Initialize with a logger



99
100
101
# File 'lib/ivar/policies.rb', line 99

def initialize(logger: Logger.new($stderr))
  @logger = logger
end

Instance Method Details

#handle_unknown_ivars(unknown_refs, _klass, allowed_ivars) ⇒ Object

Handle unknown instance variables by logging them



107
108
109
110
111
112
113
114
115
# File 'lib/ivar/policies.rb', line 107

def handle_unknown_ivars(unknown_refs, _klass, allowed_ivars)
  unknown_refs.each do |ref|
    ivar = ref[:name]
    suggestion = find_closest_match(ivar, allowed_ivars)
    suggestion_text = suggestion ? " Did you mean: #{suggestion}?" : ""
    message = "#{ref[:path]}:#{ref[:line]}: unknown instance variable #{ivar}.#{suggestion_text}"
    @logger.warn(message)
  end
end