模块 RDoc::RI::Paths
ri 数据所在的目录。Paths
可以通过 ::each
枚举,或者通过 ::system_dir
、::site_dir
、::home_dir
和 ::gem_dir
单独查询。
公共类方法
迭代每个选定的路径,产生目录和类型。
产生的类型
- :system
-
Ruby 的 ri 数据存储位置。当
system
为 true 时产生。 - :site
-
已安装库的 ri 存储位置。当
site
为 true 时产生。通常这里不存储 ri 数据。 - :home
-
~/.rdoc。当
home
为 true 时产生。 - :gem
-
已安装 gem 的 ri 数据。当
gems
为 true 时产生。 - :extra
-
来自命令行的 ri 数据目录。为
extra_dirs
中的每个条目产生。
# File rdoc/ri/paths.rb, line 33 def self.each system = true, site = true, home = true, gems = :latest, *extra_dirs # :yields: directory, type return enum_for __method__, system, site, home, gems, *extra_dirs unless block_given? extra_dirs.each do |dir| yield dir, :extra end yield system_dir, :system if system yield site_dir, :site if site yield home_dir, :home if home and HOMEDIR gemdirs(gems).each do |dir| yield dir, :gem end if gems nil end
具有 gem_name
的 gem 的 ri 目录。
# File rdoc/ri/paths.rb, line 55 def self.gem_dir name, version req = Gem::Requirement.new "= #{version}" spec = Gem::Specification.find_by_name name, req File.join spec.doc_dir, 'ri' end
最近安装的 gem 的 ri 目录。filter
可以是 :all 或 :latest。
filter
:all 包括所有版本的 gem,以及没有 ri 文档的 gem。
# File rdoc/ri/paths.rb, line 70 def self.gemdirs filter = :latest ri_paths = {} all = Gem::Specification.map do |spec| [File.join(spec.doc_dir, 'ri'), spec.name, spec.version] end if filter == :all then gemdirs = [] all.group_by do |_, name, _| name end.sort_by do |group, _| group end.map do |group, items| items.sort_by do |_, _, version| version end.reverse_each do |dir,| gemdirs << dir end end return gemdirs end all.each do |dir, name, ver| next unless File.exist? dir if ri_paths[name].nil? or ver > ri_paths[name].first then ri_paths[name] = [ver, name, dir] end end ri_paths.sort_by { |_, (_, name, _)| name }.map { |k, v| v.last } rescue LoadError [] end
用户主目录中 rdoc 数据的位置。
与 ::system 类似,用户主目录中的 ri 数据很少见,并且早于通过 RubyGems 分发的库。ri 数据很少生成到此目录中。
# File rdoc/ri/paths.rb, line 115 def self.home_dir HOMEDIR end
从选定的文档目录中返回现有目录作为数组。
另请参阅 ::each
# File rdoc/ri/paths.rb, line 125 def self.path(system = true, site = true, home = true, gems = :latest, *extra_dirs) path = raw_path system, site, home, gems, *extra_dirs path.select { |directory| File.directory? directory } end
返回选定的文档目录,包括不存在的目录。
另请参阅 ::each
# File rdoc/ri/paths.rb, line 137 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
安装到站点目录中的 ri 数据的位置。
历史上,这可用于由早于 RubyGems 的 Ruby 库安装的文档。它不太可能包含现代 Ruby 安装的任何内容。
# File rdoc/ri/paths.rb, line 154 def self.site_dir File.join BASE, 'site' end
内置 ri 数据的位置。
此数据在安装 Ruby 时运行 “make” 时自动构建。如果您没有手动安装 Ruby,您可能需要自行安装文档。请查阅您的包管理器或 Ruby 安装程序的文档以获取详细信息。您还可以使用 rdoc-data gem 为常见版本的 Ruby 安装系统 ri 数据。
# File rdoc/ri/paths.rb, line 167 def self.system_dir File.join BASE, 'system' end