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