From: Robert Klemme Date: 2004-12-09T21:47:28+09:00 Subject: Re: Inheritance, mixins and initializers "Robert Klemme" schrieb im Newsbeitrag news:31qukrF3d6rb9U1@individual.net... > > "Johan Nilsson" schrieb im Newsbeitrag > news:1102594375.344eddcc1c357ac539046c764cd8c6b8@teranews... > > Hi, > > > > I've got a question regarding inheritance, mixins, order of > initialization > > and calling module/super class "initializers". I'd like to do something > > along the lines of (pseudo-ruby code): Here's another solution - even more general: class Foo;end class Bar;end class Baz;end module FieldMixin def fields(*classes) classes.each do |cl| attr_reader cl.name.downcase.to_sym end define_method(:initialize) do super() classes.each do |cl| instance_variable_set( "@#{cl.name.downcase}", cl.new ) end end end def inherited(cl) cl.extend FieldMixin end end class Base extend FieldMixin end class Derived < Base fields Foo, Bar end class Der2 < Derived fields Baz end Derived.new.foo Derived.new.bar Der2.new.foo Der2.new.baz Kind regards robert