module_prepend_override
🛠️ Overriding with Module#prepend for AOP-like Wrappers
Use Module#prepend
to interpose behavior before or after existing methods, enabling Aspect-Oriented Programming patterns without altering the original method definitions directly.
module Logging
def process(*args)
puts "[LOG] Starting process with #{args.inspect}"
result = super
puts "[LOG] Finished process: #{result.inspect}"
result
end
end
class Job
prepend Logging
def process(data)
data.reverse
end
end
Job.new.process('ruby')
# [LOG] Starting process with ["ruby"]
# [LOG] Finished process: "ybur"