I’m trying to load ruby files into dynamically created modules. The code
is:
test1.rb:
class Test < A::Test
def run
puts “I’m test1.rb class!”
end
end
Test.new
test2.rb:
class Test < A::Test
def run
puts “I’m test2.rb class!”
end
end
Test.new
test.rb:
module A
$objs = Array.new
class Test
def initialize
$objs.push(self)
end
end
end
Module.new do |mod|
require_relative “test1.rb”
end
Module.new do |mod|
require_relative “test2.rb”
end
for o in $objs
o.run
end
Unfortunately it displays:
I’m test2.rb class!
I’m test2.rb class!
while I would expect it to display:
I’m test1.rb class!
I’m test2.rb class!
What is the reason? It works fine if module is defined statically at the
top of the included file. Why does ruby override my run method for the
first class? The class name is the same but classes are
defined in different modules so there should be no clash for run method.