Here is an example.
#!/usr/bin/ruby
class A
end
class A::B
def method_one
x = C.new
puts x.blah
end
end
class A::C
def blah
puts “I want this one”
end
end
class C
def blah
puts “this is the wrong one”
end
end
ab = A::B.new
ab.method_one
As you can see when you run it you get the blah out of ::C NOT A::C
which I was expecting. Is there a way to be able to say C.new inside
of A::B and have it check the A:: Namespace first?
On Jan 11, 2009, at 3:34 PM, [email protected] wrote:
Here is an example.
#!/usr/bin/ruby
class A
end
class A
class B
def method_one
x = C.new
puts x.blah
end
end
end
class A
class C
def blah
puts “I want this one”
end
end
ab = A::B.new
ab.method_one
As you can see when you run it you get the blah out of ::C NOT A::C
which I was expecting. Is there a way to be able to say C.new inside
of A::B and have it check the A:: Namespace first?
I don’t remember the details of “why”, but “class A::C; end” opens the
A:: scope differently from “class A; class C; end; end”. When you
make the “class A” namespace explicit, you get the behavior you were
expecting.
-Rob
Rob B. http://agileconsultingllc.com
[email protected]