From: ThoML Date: 2008-05-17T12:55:05+09:00 Subject: Re: Monkey Patching (definition)? > puts c.foo(42) > # bar 42 -- the new method ran over the old one In a class-based OO language with open classes like ruby, I'd actually expect that behaviour. > puts [] == 42 > # false -- the new method was ignored Array.respond_to?('==') => true That's because of: Object.method_defined?('==') => true BTW I think you wanted to use method_defined?() or instance_method() instead of respond_to?() which in your case refers to the class and not to the instances thereof. In your example, you actually check if there is a class method of that name and then define an instance method.