Skip to main content

hook_method_added

📌 Hooking into method_added​

method_added is a hook called whenever a new instance method is defined. Use it to wrap or annotate methods automatically—for example, adding logging or instrumentation.

module MethodLogger
def self.included(base)
base.extend ClassMethods
end

module ClassMethods
def method_added(name)
return if @_adding_wrapper
@_adding_wrapper = true

original = instance_method(name)
define_method(name) do |*args, &block|
puts "Calling \#{name} with \\#{args.inspect}"
original.bind(self).call(*args, &block)
end

@_adding_wrapper = false
end
end
end

class Worker
include MethodLogger

def perform(x)
x * 2
end
end

Worker.new.perform(10)
# Logs: Calling perform with [10]