From: Ralph Shnelvar Date: 2010-01-09T02:05:14+09:00 Subject: Something changed an instance variable ... and now I'm confused Newbie here. Consider this irb session ... F:\InstantRails-2.0-win\rails_apps>irb irb(main):001:0> class X irb(main):002:1> attr_accessor :x, :y irb(main):003:1> end => nil irb(main):004:0> irb(main):005:0* x1 = X.new => # irb(main):006:0> irb(main):007:0* x1.x = 5; irb(main):008:0* x1.y = 6; irb(main):009:0* irb(main):010:0* irb(main):011:0* irb(main):012:0* class X irb(main):013:1> def x=(arg) irb(main):014:2> puts "arg=" + arg.to_s irb(main):015:2> @x = arg irb(main):016:2> puts "whoopy" irb(main):017:2> @x irb(main):018:2> end irb(main):019:1> irb(main):020:1* def make_x irb(main):021:2> self.x = "xyzzy" irb(main):022:2> end irb(main):023:1> end => nil irb(main):024:0> irb(main):025:0* irb(main):026:0* x1.x = "hello" arg=hello whoopy => "hello" irb(main):027:0> x1 => # irb(main):028:0> x1.make_x arg=xyzzy whoopy => "xyzzy" irb(main):029:0> x1 => # irb(main):030:0> The background ... I am debugging an RoR application and noticed that the @activation_code instance variable was being modified _somewhere_. I couldn't tell where. So I added a method to the User class def activation_code=(arg) puts at_file_line_msg(__FILE__, __LINE__) puts "arg=" + arg @activation_code=arg debugger @activation_code end When I look at the value of @activation_code in the debugger (at the debuuger breakpoint), it has the right value ... but when I look at self in the debugger, the activation_code field is nil. I do not understand why things seem to work in the snippet of code I provided, above, in irb ... but do not work in the far more complex RoR environment.