On 5/23/05, Jamis Buck <jamis / 37signals.com> wrote:
> It's proxying to an array, and undefining all the relevant methods on
> the proxy so that things like #class get passed to the proxy, too.
> Unfortunately, it looks like === doesn't get proxied, and I'm not
> sure why. Perhaps Ruby does some optimizing under the covers?

It's because the proxy is the argument to, not receiver of, ===. So
the proxy doesn't intercept ===. If the implementation of === turned
around and called something on the proxy (such as is_a? or class) the
proxy would come into effect and we'd be happy. But it appears the
implementation of Class#=== is low-level enough that it doesn't need
to call any methods on its argument, and the proxy isn't noticed.

Jacob Fugal