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