K
Keith Rarick
Hello all, I am puzzled at some behavior I recently observed in ruby. I
searched the archives and google and didn't see an answer, so I am
asking here:
First I want to observe when instance methods are defined in a class, so
I do this:
class C
class << self
def method_added(name)
puts 'added ' + name.to_s
end
end
def an_instance_method
end
end
As I expect, this program prints "added an_instance_method".
Now I want to observe when class methods are defined. My understanding
of ruby says that "class methods" are really just instance methods of
the metaclass. So I do this:
class C
class << self
class << self
def method_added(name)
puts 'added ' + name.to_s
end
end
def a_class_method
end
end
end
I expect this program to print "added a_class_method", but it produces
no output.
Am I misunderstanding something or is this a bug?
Is there some other way to observe when class methods are defined?
Any help would be very much appreciated.
kr
searched the archives and google and didn't see an answer, so I am
asking here:
First I want to observe when instance methods are defined in a class, so
I do this:
class C
class << self
def method_added(name)
puts 'added ' + name.to_s
end
end
def an_instance_method
end
end
As I expect, this program prints "added an_instance_method".
Now I want to observe when class methods are defined. My understanding
of ruby says that "class methods" are really just instance methods of
the metaclass. So I do this:
class C
class << self
class << self
def method_added(name)
puts 'added ' + name.to_s
end
end
def a_class_method
end
end
end
I expect this program to print "added a_class_method", but it produces
no output.
Am I misunderstanding something or is this a bug?
Is there some other way to observe when class methods are defined?
Any help would be very much appreciated.
kr