小松です.

At Sat, 12 Jan 2002 13:29:14 +0900,
Takaaki Tateishi wrote:
> > クラスメソッドをモジュールによって実現は可能でしょうか?
> 
> コードの方は見ていませんが,includeではなくextendを
> 使うというのは解になるでしょうか?

extend が正解のようです. (extend を知りませんでした (^^;)

結局コードは以下のようになりました. ひとつのモジュールに
あらゆるクラス変数がハッシュとして格納されていたり, 同じモジュールを
include と extend の両方で呼んでいたりと, ちょっとあれですが
目的は果たせそうです.

みなさまありがとうございます.

-- 
                                                            小松弘幸
                                                -----------------------
                                                   http://taiyaki.org/

module Activity
  @@actives = {}

  def actives
    if type.equal? (Class) then
      @@actives[name]
    else
      @@actives[self.class.to_s]
    end
  end

  def activate
    if ! type.equal? (Class) then
      if @@actives[self.class.to_s].nil? then
	@@actives[self.class.to_s] = [self]
      else
	@@actives[self.class.to_s].push (self)
      end
    end
  end
  def deactivate
    if ! type.equal? (Class) then
      if ! @@actives[self.class.to_s].nil? then
	@@actives[self.class.to_s].delete (self)
      end
    end
  end
end

class ClassA
  extend  Activity
  include Activity
  # Do something
end
class ClassB
  extend  Activity
  include Activity
  # Do something
end

a1 = ClassA.new; a1.activate
a2 = ClassA.new; a2.activate

p a1.actives
a1.deactivate
p a1.actives

b1 = ClassB.new; b1.activate
b2 = ClassB.new; b2.activate

p ClassB::actives