The directories where ri data lives.
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
end
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
nil
end
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')]
end.flatten
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]
end
end
end
@gemdirs = ri_paths.map { |k,v| v.last }.sort
rescue LoadError
@gemdirs = []
end
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 }
end
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
end
path.compact
end
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 see Improve the docs, or visit Documenting-ruby.org.