I have a namespace Foo and a class Bas and a class Bar. I am adding
classes Bas & Bar are both inside the namespace Foo.
module Foo
class Bas
.
end
class Bar
.
end
end
I have some dynamically added classes that are subclasses of Bar, but I
want them to be in a namespace under Foo::Bas e.g. Foo::Bas::ThisClass
& Foo::Bar::ThatClass
class this < Bar
.
end
I put them into the namespace Foo::Bas as follows;
module Foo
class Bas
def self.load_stuff
module_eval File.read(file_name_where_this_class_is_defined)
end
end
end
This all works, but I would like to include some code that runs in the
context of ThisClass but before the contents of
file_name_where_this_class_is_defined, but the catch is I cannot assume
the names of the classes being loaded from the file, therefore I am
looking for a callback that is run in context of ThisClass as soon as
ThisClass is defined.
Any ideas?
Thanks,
James
On 10/14/06, J2M [email protected] wrote:
end
end
I have some dynamically added classes that are subclasses of Bar, but I
want them to be in a namespace under Foo::Bas e.g. Foo::Bas::ThisClass
& Foo::Bar::ThatClass
…
This all works, but I would like to include some code that runs in the
context of ThisClass but before the contents of
file_name_where_this_class_is_defined, but the catch is I cannot assume
the names of the classes being loaded from the file, therefore I am
looking for a callback that is run in context of ThisClass as soon as
ThisClass is defined.
I don’t see a callback when a class (or any constant for that matter)
is added to a module.
On the other hand, can you do what you want by overriding
Foo::Bar.inherited ? At least you can tell when a subclass has been
created.
–
Rick DeNatale
My blog on Ruby
http://talklikeaduck.denhaven2.com/
Good idea Dave, I will give that a go.
Thanks,
James
Whoops replied to the wrong message!
Thanks Rick, that worked perfectly.
James