[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Kernel#blah is documented as Object#blah. Why?

Alex Fortuna

2/18/2009 4:35:00 PM

Hi guys.

There are certain common methods that originate from module Kernel, but
they're documented in class Object.

E.g.

> o = Object.new
> => #<Object:0xb76826c8>
> o.method :send
> => #<Method: Object(Kernel)#send>

method's #inspect clearly shows that #send originates from Kernel, but:

$ ri Kernel#send
Nothing known about Kernel#send
$ ri Object#send
(ri page on #send)

Why this kind of confusion? Why not making methods like #send, #kind_of?
and a bunch of others *ACTUALLY* belong to Object, thus making
method.inspect() more accurate in terms of pointing to the proper place
in the documentation?
--
Posted via http://www.ruby-....

4 Answers

Rob Biedenharn

2/18/2009 5:03:00 PM

0

On Feb 18, 2009, at 11:34 AM, Alex Fortuna wrote:
> Hi guys.
>
> There are certain common methods that originate from module Kernel,
> but
> they're documented in class Object.
>
> E.g.
>
>> o = Object.new
>> => #<Object:0xb76826c8>
>> o.method :send
>> => #<Method: Object(Kernel)#send>
>
> method's #inspect clearly shows that #send originates from Kernel,
> but:
>
> $ ri Kernel#send
> Nothing known about Kernel#send
> $ ri Object#send
> (ri page on #send)
>
> Why this kind of confusion? Why not making methods like #send,
> #kind_of?
> and a bunch of others *ACTUALLY* belong to Object, thus making
> method.inspect() more accurate in terms of pointing to the proper
> place
> in the documentation?


Or use a different program for searching the ri docs, like fastri

$ fri Kernel#send
------------------------------------------------------------ Object#send
obj.send(symbol [, args...]) => obj
obj.__send__(symbol [, args...]) => obj
------------------------------------------------------------------------

It even helps with things like:
$ fri send
------------------------------------------------------ Multiple choices:

Net::SSH::Transport::OutgoingPacketStream#send,
Net::SSH::UserAuth::Pageant::Socket#send, Object#send,
Resolv::DNS::Requester::ConnectedUDP::Sender#send,
Resolv::DNS::Requester::TCP::Sender#send,
Resolv::DNS::Requester::UnconnectedUDP::Sender#send,
SOAP::HTTPStreamHandler#send, UDPSocket#send

http://rubyforge.org/projec...

-Rob

Rob Biedenharn http://agileconsult...
Rob@AgileConsultingLLC.com
+1 513-295-4739
Skype: rob.biedenharn



Rick DeNatale

2/18/2009 5:16:00 PM

0

[Note: parts of this message were removed to make it a legal post.]

On Wed, Feb 18, 2009 at 12:03 PM, Rob Biedenharn <Rob@agileconsultingllc.com
> wrote:

>
>
> Or use a different program for searching the ri docs, like fastri
>
> $ fri Kernel#send
> ------------------------------------------------------------ Object#send
> obj.send(symbol [, args...]) => obj
> obj.__send__(symbol [, args...]) => obj
> ------------------------------------------------------------------------
>
> It even helps with things like:
> $ fri send
> ------------------------------------------------------ Multiple choices:
>
> Net::SSH::Transport::OutgoingPacketStream#send,
> Net::SSH::UserAuth::Pageant::Socket#send, Object#send,
> Resolv::DNS::Requester::ConnectedUDP::Sender#send,
> Resolv::DNS::Requester::TCP::Sender#send,
> Resolv::DNS::Requester::UnconnectedUDP::Sender#send,
> SOAP::HTTPStreamHandler#send, UDPSocket#send


And as the name implies, it's MUCH faster than ri, unless ri has made
significant progress in that area since I pretty much stopped using it for
fri, or it's alter ego qri

--
Rick DeNatale

Blog: http://talklikeaduck.denh...
Twitter: http://twitter.com/Ri...

Alex Fortuna

2/18/2009 5:18:00 PM

0

Rob,

Well, using alternative ri implementations might be a way out.

However, for me the point isn't me not being able to find where #send is
documented. ri also supports various kinds of listings etc.

The point is trying to figure out why certain methods are documented in
(supposedly) wrong places, and, if possible, find ways to fix that. That
way we'll found a solid base for misc reflection-based doc solutions.

I'm currently writing a hack that relies upon reflection to
automatically find where the documentation is. For Rails & other gems it
works perfectly. For base Ruby -- well, one of the issues is the topic
of this post. :)
--
Posted via http://www.ruby-....

matt

2/18/2009 8:11:00 PM

0

Rob Biedenharn <Rob@AgileConsultingLLC.com> wrote:

> On Feb 18, 2009, at 11:34 AM, Alex Fortuna wrote:
> > Hi guys.
> >
> > There are certain common methods that originate from module Kernel,
> > but
> > they're documented in class Object.
> >
> > E.g.
> >
> >> o = Object.new
> >> => #<Object:0xb76826c8>
> >> o.method :send
> >> => #<Method: Object(Kernel)#send>
> >
> > method's #inspect clearly shows that #send originates from Kernel,
> > but:
> >
> > $ ri Kernel#send
> > Nothing known about Kernel#send
> > $ ri Object#send
> > (ri page on #send)
> >
> > Why this kind of confusion? Why not making methods like #send,
> > #kind_of?
> > and a bunch of others *ACTUALLY* belong to Object, thus making
> > method.inspect() more accurate in terms of pointing to the proper
> > place
> > in the documentation?
>
>
> Or use a different program for searching the ri docs, like fastri

Fastri has been broken for months OMM.

$ fri Object
(druby://127.0.0.1:50026) /usr/local/lib/ruby/1.8/yaml.rb:133:in
`transfer': invalid subclass (TypeError)
from (druby://127.0.0.1:50026)
/usr/local/lib/ruby/1.8/yaml.rb:133:in `node_import'
from (druby://127.0.0.1:50026)
/usr/local/lib/ruby/1.8/yaml.rb:133:in `load'
from (druby://127.0.0.1:50026)
/usr/local/lib/ruby/1.8/yaml.rb:133:in `load'
from (druby://127.0.0.1:50026)
/usr/local/lib/ruby/1.8/rdoc/ri/ri_descriptions.rb:72:in `deserialize'
from (druby://127.0.0.1:50026)
/usr/local/lib/ruby/site_ruby/1.8/fastri/ri_index.rb:354:in `get_class'
from (druby://127.0.0.1:50026)
/usr/local/lib/ruby/site_ruby/1.8/fastri/ri_index.rb:354:in `open'
from (druby://127.0.0.1:50026)
/usr/local/lib/ruby/site_ruby/1.8/fastri/ri_index.rb:354:in `get_class'
from (druby://127.0.0.1:50026)
/usr/local/lib/ruby/site_ruby/1.8/fastri/ri_index.rb:352:in `each'
from (druby://127.0.0.1:50026)
/usr/local/lib/ruby/site_ruby/1.8/fastri/ri_index.rb:352:in `get_class'
from (druby://127.0.0.1:50026)
/usr/local/lib/ruby/site_ruby/1.8/fastri/ri_service.rb:209:in `info'
from (druby://127.0.0.1:50026)
/usr/local/lib/ruby/site_ruby/1.8/fastri/ri_service.rb:422:in
`capture_stdout'
from (druby://127.0.0.1:50026)
/usr/local/lib/ruby/site_ruby/1.8/fastri/ri_service.rb:208:in `info'
from /usr/local/bin/fri:342
from /usr/local/bin/fri:337:in `each'
from /usr/local/bin/fri:337

m.

--
matt neuburg, phd = matt@tidbits.com, http://www.tidbits...
Leopard - http://www.takecontrolbooks.com/leopard-custom...
AppleScript - http://www.amazon.com/gp/product/...
Read TidBITS! It's free and smart. http://www.t...