Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more

In Files

  • rdoc/ri/paths.rb

Class/Module Index [+]



The directories where ri data lives.

Public Class Methods

each(system, site, home, gems, *extra_dirs) click to toggle source

Iterates over each selected path yielding the directory and type.

Yielded types:


Where Ruby’s ri data is stored. Yielded when system is true


Where ri for installed libraries are stored. Yielded when site is true. Normally no ri data is stored here.


~/.rdoc. Yielded when home is true.


ri data for an installed gem. Yielded when gems is true.


ri data directory from the command line. Yielded for each entry in extra_dirs

               # File rdoc/ri/paths.rb, line 50
def self.each system, site, home, gems, *extra_dirs # :yields: directory, type
  extra_dirs.each do |dir|
    yield dir, :extra

  yield SYSDIR,  :system if system
  yield SITEDIR, :site   if site
  yield HOMEDIR, :home   if home and HOMEDIR

  gemdirs.each do |dir|
    yield dir, :gem
  end if gems

gemdirs() click to toggle source

The latest installed gems’ ri directories

               # File rdoc/ri/paths.rb, line 69
def self.gemdirs
  return @gemdirs if @gemdirs

  require 'rubygems' unless defined?(Gem)

  # HACK dup'd from Gem.latest_partials and friends
  all_paths = []

  all_paths = Gem.path.map do |dir|
    Dir[File.join(dir, 'doc', '*', 'ri')]

  ri_paths = {}

  all_paths.each do |dir|
    base = File.basename File.dirname(dir)
    if base =~ /(.*)-((\d+\.)*\d+)/ then
      name, version = $1, $2
      ver = Gem::Version.new version
      if ri_paths[name].nil? or ver > ri_paths[name][0] then
        ri_paths[name] = [ver, dir]

  @gemdirs = ri_paths.map { |k,v| v.last }.sort
rescue LoadError
  @gemdirs = []
path(system, site, home, gems, *extra_dirs) click to toggle source

Returns existing directories from the selected documentation directories as an Array.

See also ::each

               # File rdoc/ri/paths.rb, line 105
def self.path(system, site, home, gems, *extra_dirs)
  path = raw_path system, site, home, gems, *extra_dirs

  path.select { |directory| File.directory? directory }
raw_path(system, site, home, gems, *extra_dirs) click to toggle source

Returns selected documentation directories including nonexistent directories.

See also ::each

               # File rdoc/ri/paths.rb, line 117
def self.raw_path(system, site, home, gems, *extra_dirs)
  path = []

  each(system, site, home, gems, *extra_dirs) do |dir, type|
    path << dir


Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.