Initialize a subclass inside a namespace

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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs