Download this source
# ivar on main
@ivar = 3
class Module
# ivar on class
@ivar = 40
alias :_old_attr_accessor :attr_accessor
def attr_accessor(*syms)
puts "Defining accessors for #{syms.join(', ')}"
_old_attr_accessor(*syms)
end
end
puts "Going to define the class"
class MyNormalClass
@ivar = 500 # special treatment
puts "before accessor"
attr_accessor :ivar
puts "after accessor"
end
puts "Done defining class\n\n"
mnc = MyNormalClass.new
mnc.ivar = 1000
puts "main: #{@ivar}"
puts "Module: #{Module.instance_eval { @ivar } }"
puts "MyNormalClass: #{MyNormalClass.instance_eval { @ivar } }"
puts "mnc: #{mnc.instance_eval { @ivar } }"
Running this outputs:
Going to define the class
before accessor
Defining accessors for ivar
after accessor
Done defining class
main: 3
Module: 40
MyNormalClass: 500
mnc: 1000

