Just wondering about instance variable scope and modules.

Download this source

module MyModule
  def MyModule.mymethod(var)
    @var = var
  end
end

class AClz
  include MyModule
end

class BClz
  include MyModule
end

a = AClz.new
b1 = BClz.new
b2 = BClz.new

p MyModule.mymethod('mod')
p MyModule.instance_eval { @var }    
p MyModule.class_eval { @var }       
p a.class.class_eval { @var }            
p b1.class.class_eval { @var }          
p b2.class.class_eval { @var }          

MyModule.mymethod('changed')
b2.class.class_eval { @var = 'again' }

p MyModule.instance_eval { @var }    
p MyModule.class_eval { @var }        
p a.class.class_eval { @var }           
p b1.class.class_eval { @var }         
p b2.class.class_eval { @var }

Running this outputs:

"mod"
"mod"
"mod"
nil
nil
nil
"changed"
"changed"
nil
"again"
"again"