Documentation from inside irb

Hi,

is there a way to call ri documentation from irb ?
Something like:

shell>irb
irb(main):001:0> help inspect
NameError: undefined method execute' for moduleIRB::ExtendCommand::Help’
from (eval):4:in instance_method' from (eval):4:inhelp’
from (irb):1
from /usr/lib/ruby/1.8/rubygems.rb:1016

On Thu, Jul 22, 2010 at 10:08:23PM +0900, Eugen C. wrote:

    from (irb):1
    from /usr/lib/ruby/1.8/rubygems.rb:1016

The wirble gem allows you to use ri from within irb sessions. It adds
various other fancy bits as well, which may or may not be interesting.

Dan

wow, it has even tab completion!
thank you Dan!

Eugen C. wrote:

wow, it has even tab completion!

that’s easy to get, even without wirble; just:

require 'irb/completion'


G.

Eugen C. wrote:

Hi,

is there a way to call ri documentation from irb ?

If you just want to access ri within irb then this would do in your
.irbrc:

def help(*args); system(‘ri’, *args); end

If you want a smarter ri, see
eigenclass.org and
Tagaholic - Page Irb Output And Improve Ri With Hirb
.

As for an improvement on irb’s autocompletion, see bond -

Gabriel

Eugen C. wrote:

Hi,

is there a way to call ri documentation from irb ?
Something like:

shell>irb
irb(main):001:0> help inspect
NameError: undefined method execute' for moduleIRB::ExtendCommand::Help’
from (eval):4:in instance_method' from (eval):4:inhelp’
from (irb):1
from /usr/lib/ruby/1.8/rubygems.rb:1016

This is a bug in core and “should” work, really…

that being the case, here’s my attempt at it:

$ gem install ri_for
$ irb

require ‘rubygems’
require ‘ri_for’
IO.ri_for :open
sig: Kernel#open arity -1
appears to be a c method
Searching ri for
sig: Kernel#open arity -1

ri_for gives you more than just ri–it gives you the source code where
available, which turns out to be quite useful.
Cheers!
-r

Thank you!

Gabriel, the only remark is that if I leave method’s name ‘help’ then
upon loading irb a warning is issued:

irb: warn: can’t alias help from irb_help.

If ‘help’ will be renamed to something else, for example, ‘hel’, then
it is possible to call ri help from command line only if its arguments
will be quoted:

irb(main):007:0> hel String
TypeError: can’t convert Class into String
from /home/eugen/.irbrc:3:in system' from /home/eugen/.irbrc:3:inhel’
from (irb):7
from :0
irb(main):008:0> hel ‘String’

=> true