This week I just realize the power of ruby alias_method, you use alias_method to intercept the existing method, and modify its behaviour, this is exactly what AOP does the jobs.
The following code example tell you how to use the alias_method, to add a logging logic to the exit() method.
This reminds me the javaasist framework, I used before, which is a powerful tool to do bytecode manipulation, it can intercept the method by renaming the existing method to another method, and modifying the existing method, which is the exactly similar strategy.
the code example:
Now when you compare two solution, you will tell how easy to do it in Ruby!
1. alias_method API document
2. IBM Javaassist tutorial
3. Spring AOP document