我想自己实现一下 rails 的 before_filter 功能,但是遇到了一个问题:ruby 要如何捕捉到一个函数的调用?
我的方法是利用 alias_method,但总感觉不太满意。
于是我去看 rails 的源代码。
注意到它是维护了一个 filter_chain,然后在目标函数调用之前调用设定好的 filter。
但是还是没有解决我的疑问:rails 是如何捕捉到函数的调用的呢?
具体地说,
比如,我又一个 class Dog,对其 bark 方法设定了一个 before_filter。那要想执行这个 filter,肯定要在我调用 dog.bark 时捕捉到这个调用。然后才能进行操作。
谁知道 rails 是怎么实现的吗。。。。