Forum: Ruby delegate and unless for __

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Raj S. (Guest)
on 2009-05-06 00:50
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 => :@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
Robert K. (Guest)
on 2009-05-06 20:41
(Received via mailing list)
On 05.05.2009 22:50, Raj S. wrote:
> 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
Robert D. (Guest)
on 2009-05-06 21:15
(Received via mailing list)
On Wed, May 6, 2009 at 6:40 PM, Robert K.
<removed_email_address@domain.invalid> wrote:
>> 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__").
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

--
Si tu veux construire un bateau ...
Ne rassemble pas des hommes pour aller chercher du bois, préparer des
outils, répartir les tâches, alléger le travail… mais enseigne aux
gens la nostalgie de l’infini de la mer.

If you want to build a ship, don’t herd people together to collect
wood and don’t assign them tasks and work, but rather teach them to
long for the endless immensity of the sea.
Raj S. (Guest)
on 2009-05-06 23:01
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.
Robert D. (Guest)
on 2009-05-07 01:16
(Received via mailing list)
On Wed, May 6, 2009 at 9:01 PM, Raj S. <removed_email_address@domain.invalid> 
wrote:
> Hi Robert,
> I was just curious about leaving methods starting with __ as it is.
Than thank you even more for sharing the link :)
> --
> Posted via http://www.ruby-forum.com/.
>
>



--
Si tu veux construire un bateau ...
Ne rassemble pas des hommes pour aller chercher du bois, préparer des
outils, répartir les tâches, alléger le travail… mais enseigne aux
gens la nostalgie de l’infini de la mer.

If you want to build a ship, don’t herd people together to collect
wood and don’t assign them tasks and work, but rather teach them to
long for the endless immensity of the sea.
This topic is locked and can not be replied to.