I am trying to get access to an instance variable. I have simplified
my usage down to the following example.
=== start-of-code
module A
def A.a
puts “A:#{@u}”
end
end
module B
def b
puts “B:#{@u}”
end
end
module C
include A
include B
end
class Blah
include C
def initialize(u) @u = u
end
def go
A.a
b
end
end
blah = Blah.new(“bob”)
blah.go
=== end-of-code
My main question is that how can I get at the instance variable @u
from within module A. I can use it fine from module B so I assume it
is a namespace problem. It turns out that due to the way my mixins are
used, I need to guard them against duplication. I guess I could use a
prefix “def moduleA_a … end” (El Yucko).
The first method is defined ON the module A, not in the module, so
it’s not a method of the instance of Blah, and within the A.a method @u refers to an instance variable of the object named A, i.e. the
module itself, where as the b method, being in an instance method
provided by the B module, is referring to the instance variable in the
instance of Blah.