ara.t.howard / noaa.gov wrote:
> so long as we have to rely on objects responding to certain methods certain
> constructs, such as those that meta-programming cut to, can be made 
> difficult
> since the very methods we require to operate can be over-ridden.  this 
> is why
> we have
>   __id__
>   __send__
Hrm. I thought the reason __id__ and __send__ where there was because id 
and send are fairly common names and useful for custom methods in, say, 
ActiveRecord::Base and Socket.

> are examples.  by moving the essential methods outside of the object 
> itself an
> into a frozen introspector
> 
>   Introspector.object_id obj
Another option is to make __id, __send, and __send! impervious to 
metaprogramming.  Say, they are listed in #methods because that's useful 
for irb-learning, but remove_method and the like are no-ops when called 
on __id, __send, and __send!. That way you can have your BlankSlate and 
eat it, too. Thoughts?

Devin