The bug on line 11
is put there on purpose. I am curious about how pry
works in this example.
In the code below, when I enter pry
, if I type name
I get nil
, which means that pry
is outputting the value of the local variable which will be initialized on line 11
. However, there is a getter method name
and if I output its value on line 9
I get "Nemo".
Does pry
first looks for local variables in a method? If so, how come that name
is not undefined on line 9
?
class Animal
attr_accessor :name
def initialize(name)
@name = name
end
def change_name
binding.pry
p name
name = name.upcase
end
end
fish = Animal.new('Nemo')
p fish.name # => 'Nemo'
p fish.change_name