Simple copy of attributes

Facets has Kernel#set_from:

  bidule.set_from(biniou, :foo, :bar, :baz)

Out of curiosity, why put that in Kernel instead of Object?

Actually, what heuristic do people use in general for adding methods to
Kernel versus putting them in Object? Assuming that my oh-so-pretty flow
diagram[1] is correct, the end functionality should be equivalent. Is it
just a matter of semantics as to where they ought to go?

[1] http://phrogz.net/RubyLibs/RubyMethodLookupFlow.png

···

From: Trans [mailto:transfire@gmail.com]

Gavin Kistner wrote:

From: Trans [mailto:transfire@gmail.com]
> Facets has Kernel#set_from:
>
> bidule.set_from(biniou, :foo, :bar, :baz)

Out of curiosity, why put that in Kernel instead of Object?

Actually, what heuristic do people use in general for adding methods to
Kernel versus putting them in Object? Assuming that my oh-so-pretty flow
diagram[1] is correct, the end functionality should be equivalent. Is it
just a matter of semantics as to where they ought to go?

[1] http://phrogz.net/RubyLibs/RubyMethodLookupFlow.png

It is something even experienced ruby programmer's can fail to realize:
Object class has NO methods. ri is somewhat misleading in this regard,
and the functionality equivalency you mention often means it goes
unnoticed. it certainly surprised me when i first discovered it. While
only matz can say exactly why, i think Object is left empty for end
programmers to add their extension methods to --that way they are
easily distinguished from built-in Kernel methods. Hence a lower-level
lib like Facets uses Kernel, while a higher-level app like Basecamp
would use Object --at least that's my take on it.

btw that reminds me -- YAML/Syck is sticking some methods in Object,
that perhaps would be more appropriate in Kernel (?)

  irb(main):002:0> p Object.instance_methods(false)
  
  => nil
  irb(main):003:0> require 'yaml'
  => true
  irb(main):004:0> p Object.instance_methods(false)
  ["taguri", "taguri=", "to_yaml_properties", "to_yaml",
"to_yaml_style"]

t.

I'm sorry for this question, but I'm a newbie and I just started reading the
Little Book of Ruby. On page 22 it says that "the to_s method is defined
for the Object class itself". If the Object class has no methods (as your
irb session shows), then what exactly is meant by the Little Book of Ruby
statement?

···

On 12/19/06, Trans <transfire@gmail.com> wrote:

Gavin Kistner wrote:
> From: Trans [mailto:transfire@gmail.com]
> > Facets has Kernel#set_from:
> >
> > bidule.set_from(biniou, :foo, :bar, :baz)
>
> Out of curiosity, why put that in Kernel instead of Object?
>
> Actually, what heuristic do people use in general for adding methods to
> Kernel versus putting them in Object? Assuming that my oh-so-pretty flow
> diagram[1] is correct, the end functionality should be equivalent. Is it
> just a matter of semantics as to where they ought to go?
>
> [1] http://phrogz.net/RubyLibs/RubyMethodLookupFlow.png

It is something even experienced ruby programmer's can fail to realize:
Object class has NO methods. ri is somewhat misleading in this regard,
and the functionality equivalency you mention often means it goes
unnoticed. it certainly surprised me when i first discovered it. While
only matz can say exactly why, i think Object is left empty for end
programmers to add their extension methods to --that way they are
easily distinguished from built-in Kernel methods. Hence a lower-level
lib like Facets uses Kernel, while a higher-level app like Basecamp
would use Object --at least that's my take on it.

btw that reminds me -- YAML/Syck is sticking some methods in Object,
that perhaps would be more appropriate in Kernel (?)

irb(main):002:0> p Object.instance_methods(false)

=> nil
irb(main):003:0> require 'yaml'
=> true
irb(main):004:0> p Object.instance_methods(false)
["taguri", "taguri=", "to_yaml_properties", "to_yaml",
"to_yaml_style"]

t.

Jason Mayer wrote:

I'm sorry for this question, but I'm a newbie and I just started reading the
Little Book of Ruby. On page 22 it says that "the to_s method is defined
for the Object class itself". If the Object class has no methods (as your
irb session shows), then what exactly is meant by the Little Book of Ruby
statement?

That's a good example. Technically, #to_s is defined in Kernel not
Object. But since everyithing in Kernel is defined ultimately for
Object b/c Kernel is included into Object, then in a round about way
what the book is true. It would be better if it mentioned Kernel's
invovlement though.

t.

shows me exactly what I wanted to see. Thanks again!

···

On 12/20/06, Trans <transfire@gmail.com> wrote:

Jason Mayer wrote:
> I'm sorry for this question, but I'm a newbie and I just started reading
the
> Little Book of Ruby. On page 22 it says that "the to_s method is
defined
> for the Object class itself". If the Object class has no methods (as
your
> irb session shows), then what exactly is meant by the Little Book of
Ruby
> statement?

That's a good example. Technically, #to_s is defined in Kernel not
Object. But since everyithing in Kernel is defined ultimately for
Object b/c Kernel is included into Object, then in a round about way
what the book is true. It would be better if it mentioned Kernel's
invovlement though.

t.

Thanks, that clears it up for me. Doing p Kernel.instance_methods(false)