delegate and unless for __

R

Raj Singh

Anytime I see the delegate code usually there is an unless along with
it. The code might look like this.

Object.instance_methods.each do |m|
delegate m, :to => :mad:model unless m =~ /^__/
end


I am thinking that __ is escaped so that one could called
object.__SEND__ and this call will not be sent to the delegate. Is that
the reason why __ is not delegated to the delegate or the actual
reasoning is something else?

That piece of code as picked up from http://m.onkey.org/2008/10/5/sanity
 
R

Robert Klemme

Anytime I see the delegate code usually there is an unless along with
it. The code might look like this.

Object.instance_methods.each do |m|
delegate m, :to => :mad:model unless m =~ /^__/
end


I am thinking that __ is escaped so that one could called
object.__SEND__ and this call will not be sent to the delegate. Is that
the reason why __ is not delegated to the delegate or the actual
reasoning is something else?

I think you're spot on. There seems to be a convention that method
whose names start with underscores are not really meant to be part of
the regular public interface (such as "__send__").

Kind regards

robert
 
R

Robert Dober

I think you're spot on. =A0There seems to be a convention that method who= se
names start with underscores are not really meant to be part of the regul= ar
public interface (such as "__send__").
So do I think :)
However, unless this is a somehow contrived example, I would love to
know more about the usecase for this.
Delegating all Object methods somehow puzzles me. Please do not get me
wrong, there might be a very good reason for this. But I am curious,
because whenever I did something like this I rather deleted the
methods, mixed in something or extended objects.
Maybe delegation was something I should have considered even in core
related metaprogramming.
Would you care to elaborate?

Thx in advance
Robert

--=20
Si tu veux construire un bateau ...
Ne rassemble pas des hommes pour aller chercher du bois, pr=E9parer des
outils, r=E9partir les t=E2ches, all=E9ger le travail=85 mais enseigne aux
gens la nostalgie de l=92infini de la mer.

If you want to build a ship, don=92t herd people together to collect
wood and don=92t assign them tasks and work, but rather teach them to
long for the endless immensity of the sea.
 
R

Raj Singh

Hi Robert,

Thanks for the answer.

As I posted in the question the code is picked up from
http://m.onkey.org/2008/10/5/sanity . I did not code it so I do not know
the justification for this style of coding.

I was just curious about leaving methods starting with __ as it is.
 
R

Robert Dober

Hi Robert,
I was just curious about leaving methods starting with __ as it is.
Than thank you even more for sharing the link :)


--=20
Si tu veux construire un bateau ...
Ne rassemble pas des hommes pour aller chercher du bois, pr=E9parer des
outils, r=E9partir les t=E2ches, all=E9ger le travail=85 mais enseigne aux
gens la nostalgie de l=92infini de la mer.

If you want to build a ship, don=92t herd people together to collect
wood and don=92t assign them tasks and work, but rather teach them to
long for the endless immensity of the sea.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,226
Members
46,815
Latest member
treekmostly22

Latest Threads

Top