# 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 } }"