Robert Klemme wrote: > ts wrote: > >>>>>>>"D" == Damphyr <damphyr / freemail.gr> writes: >> >>>I do something like the following >> >> Try something like this >> >>moulon% cat b.rb >>#!/usr/bin/ruby >>class Test >> def self.open >> tt = new >> yield tt >> ensure >> tt.close if tt >> end >> >> def close >> end >>end >> >>module SomeModule >> def some_module_method >> puts "some_module_method" >> end >>end >> >>class DerivedTest<Test >> include SomeModule >>end >> >>DerivedTest.open{|tt| >> tt.some_module_method >>} >>moulon% >> >>moulon% ./b.rb >>some_module_method >>moulon% >> >> >> >>Guy Decoux > > > Guy, you were too fast again! :-) So I cut out my similar example and > just add what would have been my explanation: > > The trick is not to do Test.new but to use just new (calls self.new which > is DerivedTest in sub class). > > Kind regards > > robert I can always rely on Guy for a fast answer :). Simple, when not very obvious. I guess I had to keep in mind that new is private and for private methods self. is implicit. Thanks guys, V.- -- http://www.braveworld.net/riva ____________________________________________________________________ http://www.freemail.gr - δωρεάν υπηρεσία ηλεκτρονικού ταχυδρομείου. http://www.freemail.gr - free email service for the Greek-speaking.