From: Surendra Singhi Date: 2006-03-02T22:16:19+09:00 Subject: Re: ruby modules and classes Hello Ross, Ross Bamford writes: > On Wed, 2006-03-01 at 23:57 +0900, Surendra Singhi wrote: >> Hello, >> >> When I try the code below I get an error. Why is it so? Am I misunderstanding >> how modules behave? How should the module be written so that `who_am_i' is >> added as a method to the class Phonograph. >> >> module Debug >> def self.who_am_i? >> "#{self.class.name} (\##{self.id}): #{self.to_s}" >> end >> end >> class Phonograph >> include Debug >> end >> Phonograph.who_am_i? > > Depends what you want, but how about: > Thanks for your reply. > module Debug > def who_am_i? > "#{self.class.name} (\##{self.object_id}): #{self.to_s}" > end > end > > class Phonograph > class << self > include Debug > end > end > > p Phonograph.who_am_i? > In the meantime I found another way to do this: class Phonograph extend Debug end are the two methods equivalent, or is there any difference? > Or, if you want it as both class and instance methods, I like this > trick: > > module Debug > def who_am_i? > "#{self.class.name} (\##{self.object_id}): #{self.to_s}" > end > > def self.included(othermod) > othermod.extend(self) > end > end > > class Phonograph > include Debug > end > > p Phonograph.who_am_i? > p Phonograph.new.who_am_i? > > (P.s. do you know about Object#inspect?) Now I do. Thanks once again, I appreciate your help. -- Surendra Singhi http://ssinghi.kreeti.com, http://www.kreeti.com Read the latest news at: http://news.kreeti.com ,---- | Great wits are sure to madness near allied, | And thin partitions do their bounds divide. | | (John Dryden, Absalom and Achitophel, 1681) `----