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