<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>hxhxhx88 (韩旭)</title>
    <link>https://ruby-china.org/hxhxhx88</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>rails 是如何实现 before_filter 的？</title>
      <description>&lt;p&gt;我想自己实现一下 rails 的 before_filter 功能，但是遇到了一个问题：ruby 要如何捕捉到一个函数的调用？&lt;/p&gt;

&lt;p&gt;我的方法是利用 alias_method，但总感觉不太满意。&lt;/p&gt;

&lt;p&gt;于是我去看 rails 的源代码。&lt;/p&gt;

&lt;p&gt;注意到它是维护了一个 filter_chain，然后在目标函数调用之前调用设定好的 filter。&lt;/p&gt;

&lt;p&gt;但是还是没有解决我的疑问：rails 是如何捕捉到函数的调用的呢？&lt;/p&gt;

&lt;p&gt;具体地说，&lt;/p&gt;

&lt;p&gt;比如，我又一个 class Dog，对其 bark 方法设定了一个 before_filter。那要想执行这个 filter，肯定要在我调用 dog.bark 时捕捉到这个调用。然后才能进行操作。&lt;/p&gt;

&lt;p&gt;谁知道 rails 是怎么实现的吗。。。。&lt;/p&gt;</description>
      <author>hxhxhx88</author>
      <pubDate>Wed, 29 Aug 2012 17:33:19 +0800</pubDate>
      <link>https://ruby-china.org/topics/5234</link>
      <guid>https://ruby-china.org/topics/5234</guid>
    </item>
  </channel>
</rss>
