FastRI 0.1.0: faster, smarter RI docs for Ruby, DRb-enabled 

FastRI can be installed with RubyGems:
  gem install fastri
(if you get an old version/a 404 error, please allow some time after the
release until the package propagates to the RubyForge mirrors). Please read
below for an important note regarding the RubyGems packages.

Additional information, tarballs... at 
  http://eigenclass.org/hiki.rb?fastri

Overview
========
FastRI is an alternative to the ri command-line tool. It is *much* faster, and
also allows you to offer RI lookup services over DRb. FastRI is smarter than
ri, and can find classes anywhere in the hierarchy without specifying the
"full path". It also knows about gems, and can tell you e.g. which extensions
to a core class were added by a specific gem.

Usage
=====
There are two parts to FastRI:
* the server: fastri-server
* the client: fri

FastRI uses a Rinda Ring to allow servers to be discovered automatically
without needing to indicate the DRb URIs manually. It can work across 
machines if you make sure the ring server is bound to the correct interface,
and the ACL permissions are correct.

Examples
========
 $ fastri-server      (creates the index on the first run, blocks)

Later, 
 $ fri Array#fetch

Speed
=====
fri is much faster than ri; here are some times measured with a cold cache:

 $ time fri -f plain Array#fetch
 ------------------------------------------------------------ Array#fetch
      array.fetch(index)                    -> obj
 [...]
 real    0m0.287s  (real    0m0.127s with a hot cache)
 user    0m0.048s
 sys     0m0.008s

Compare to:
 $ time ri -T -f plain Array#fetch
 ------------------------------------------------------------ Array#fetch
 [...]
 real    0m10.136s (real    ~ 1.5s with a hot cache)
 user    0m1.140s
 sys     0m0.464s

Smart searches
==============
This illustrates FastRI's ability to locate classes deep in the class
hierarchy:

 $ fri Base
 ------------------------------------------------------ Multiple choices:

      ActionMailer::Base, ActionView::Base, ActionWebService::API::Base, 
      ActionWebService::Base, ActionWebService::Client::Base, 
      ActiveRecord::Base, MapReduce::ActiveRecord::Base, 
      RSS::Maker::Base, Scruffy::Components::Base, 
      Scruffy::Formatters::Base, Scruffy::Layers::Base, 
      Scruffy::Renderers::Base, Scruffy::Themes::Base

 $ fri Themes::Base
 ------------------------------------------- Class: Scruffy::Themes::Base
      Scruffy::Themes::Base
      Author: Brasten Sager

      Date:   August 14th, 2006

Compare to 
 $ ri Themes::Base      .... several seconds later ...
 Nothing known about Themes::Base

A note about RubyGems + FastRI
==============================
RubyGems adds a noticeable overhead to fri, making it run slower than if you
installed it directly from the tarball with setup.rb.

Compare the execution time when installed with RubyGems:
  $ time fri -f plain String > /dev/null

  real	0m0.385s
  user	0m0.244s
  sys	0m0.036s

to the time fri actually takes to run, without the overhead introduced by 
RubyGems:
  $ time ruby bin/fri -f plain String > /dev/null

  real	0m0.088s
  user	0m0.040s
  sys	0m0.008s

If you care about those extra 300ms (and there are situations where they will
matter, e.g. when using fri for method completion), get FastRI from the
tarballs.

Thanks
======
rubikitch
---------
* command-line options to load/build the index
* testing and suggestions

Kristof Bastiaensen
-------------------
For showing the way with ri-emacs.rb.

License
=======
FastRI is licensed under the same terms as Ruby. See LICENSE.

Feedback
========
Bug reports, patches, comments... are appreciated.
You can contact the author via <mfp / acm.org>. Please add "fastri" to the
subject in order to bypass the spam filters.


-- 
Mauricio Fernandez  -   http://eigenclass.org   -  singular Ruby