errors/name_error/names.rb
tests/_examples/errors/name_error/names.rb in the metorex repository.
def report
yield
rescue NameError => error
p error.name
end
report { doesnt_exist }
report { DoesntExist }
report { Object::DoesntExist }
ivar_name = "invalid_ivar_name"
report { Object.new.instance_variable_get ivar_name }
cvar_name = "invalid_cvar_name"
report { Object.class_variable_get cvar_name }
class Counter
@@total = 7
def self.total
@@total
end
def self.missing
@@never_set
end
end
class Subcounter < Counter
end
puts Counter.total
puts Subcounter.total
begin
Counter.missing
rescue NameError => error
puts error.message
p error.name
end
Output:
:doesnt_exist
:DoesntExist
:DoesntExist
"invalid_ivar_name"
"invalid_cvar_name"
7
7
uninitialized class variable @@never_set in Counter
:@@never_set