Skip to content
Object-Oriented RI for IRB Console
Ruby
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
dev
lib
samples
spec
.gitignore
MIT-LICENSE
README.html
README.md
Rakefile
VERSION.yml
ori.gemspec

README.md

Object-Oriented RI for IRB Console

Introduction

Finding documentation for Ruby gems and libraries is often time-consuming. ORI addresses this issue by bringing RI documentation right to your IRB console in a simple, consistent and truly object-oriented way.

If you're too lazy to read this README, watch this screencast instead.

Setup

$ gem sources --add http://rubygems.org
$ gem install ori

Add to your ~/.irbrc:

require "rubygems"
require "ori"

Setup in RVM

If you're using RVM (Ruby Version Manager), install the gem into global gemset of Rubies you're actively using:

$ rvm 1.9.2
$ rvm gemset use global
$ gem install ori

Requirements

It is recommended that you have Ruby >= 1.8.7 and RDoc >= 2.5.3. Issue reports for older versions will, most probably, be ignored.

Usage

All commands listed below are assumed to be typed in IRB. Example:

$ irb
irb> Array.ri

Request RI on a Class

Array.ri
String.ri
[].ri
"".ri
5.ri

So that's fairly straightforward -- grab a class or class instance and call ri on it:

obj = SomeKlass.new
obj.ri

Request RI on a Method

String.ri :upcase
"".ri "upcase"
[].ri :sort
Hash.ri :[]
Hash.ri "::[]"
Hash.ri "#[]"

Request Interactive Method List

# Regular expression argument denotes list request.
String.ri //
"".ri //

# Show method names matching a regular expression.
"".ri /case/
"".ri /^to_/
[].ri /sort/
{}.ri /each/

# Show ALL methods, including those private of Kernel.
Hash.ri //, :all => true
Hash.ri //, :all

# Show class methods or instance methods only.
Module.ri //, :access => "::"
Module.ri //, :access => "#"

# Show own methods only.
Time.ri //, :own => true
Time.ri //, :own

# Specify visibility: public, protected or private.
Module.ri //, :visibility => :private
Module.ri //, :visibility => [:public, :protected]

# Filter fully formatted name by given regexp.
Module, //, :fullre => /\(Object\)::/

# Combine options.
Module.ri //, :fullre => /\(Object\)::/, :access => "::", :visibility => :private

Request Interactive Method List for More Than 1 Object at Once

By using the :join option it's possible to fetch methods for more than 1 object at once. Value of :join (which can be an object or an array) is joined with the original receiver, and then a combined set is queried.

# List all division-related methods from numeric classes.
Fixnum.ri /div/, :join => [Float, Rational]
5.ri /div/, :join => [5.0, 5.to_r]

# List all ActiveSupport extensions to numeric classes.
5.ri //, :join => [5.0, 5.to_r], :fullre => /ActiveSupport/

# Query entire Rails family for methods having the word "javascript".
rails_modules = ObjectSpace.each_object(Module).select {|mod| mod.to_s.match /Active|Action/}
"".ri /javascript/, :join => rails_modules

Configuration

You can configure ORI via ORI.conf object. By default it's autoconfigured based on your OS and environment.

# Enable color.
ORI.conf.color = true

# RI frontend command to use. <tt>%s</tt> is replaced with sought topic.
ORI.conf.frontend = "ri -T -f ansi %s"

# Paging program to use.
ORI.conf.pager = "less -R"

Compatibility

Prior to publication, ORI gem has been thoroughly tested on:

  • Ruby 1.9.2-p0 under Linux with RVM
  • Ruby 1.8.7-p302 under Linux with RVM
  • Ruby 1.8.7-p72 under Cygwin
  • Ruby 1.8.7-p72 under 32-bit Windows Vista

Copyright

Copyright © 2011 Alex Fortuna.

Licensed under the MIT License.

Feedback

Send bug reports, suggestions and criticisms through project's page on GitHub.

Something went wrong with that request. Please try again.