Ruby modules and classes


#1

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?

Thanks.


Surendra S.
http://ssinghi.kreeti.com, http://www.kreeti.com
Read the latest news at: http://news.kreeti.com
,----
| “O thou my friend! The prosperity of Crime is like unto the lightning,
| whose traitorous brilliancies embellish the atmosphere but for an
| instant, in order to hurl into death’s very depths the luckless one
| they have dazzled.” – Marquis de Sade
`----


#2

On Wed, 2006-03-01 at 23:57 +0900, Surendra S. wrote:

end
class Phonograph
include Debug
end
Phonograph.who_am_i?

Depends what you want, but how about:

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?

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?)


#3

Hello Ross,

Ross B. removed_email_address@domain.invalid writes:

end
end
class Phonograph
include Debug
end
Phonograph.who_am_i?

Depends what you want, but how about:

Thanks for your reply.

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?

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 S.
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)
`----