使用 ri 命令查看 API

经常去 APIDOCK.COM 查询标准 API,今天访问时忽然变得很慢,忽然想起 Ruby 有自己的 Rdoc,是不是能自己生成一个本地的文档呢。

隐约记得有两种方法查看本地文档,一个是使用 ri 命令,一个是用 Rdoc 生成 Html 格式的文件在浏览器中查询。ri 文档基于 Rdoc 来生成。我更喜欢使用命令行格式的,不过直接 ri 了一下,只有几个 gem 的文档,没有 Ruby 核心和标准库的。我用的是 rvm,rvm 安装 rubies 后并不会自动生成 rdoc,还需要手动生成。

删除 gem 文档

因为 ri method 会列出所有包含 method 的 gem,为了不让输出显得凌乱,需要把默认的 gem 的 doc 全部去掉,这些 gem 很多只是为了解决依赖自动下载的并不常用,也不需要。先贴一下 gem 环境

abc@abc-desktop:~$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.6.2
  - RUBY VERSION: 1.9.2 (2011-02-18 patchlevel 180) [i686-linux]
  - INSTALLATION DIRECTORY: /home/abc/.rvm/gems/ruby-1.9.2-p180
  - RUBY EXECUTABLE: /home/abc/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
  - EXECUTABLE DIRECTORY: /home/abc/.rvm/gems/ruby-1.9.2-p180/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /home/abc/.rvm/gems/ruby-1.9.2-p180
     - /home/abc/.rvm/gems/ruby-1.9.2-p180@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

进入 GEM PATHS 即 ~/.rvm/gems/ruby-1.9.2-p180/doc 中执行 rm -rf 删除掉所有文档。

gem 安装时选择 gem install gemname --no-ri --no-rdoc 可以避免生成文档,如果不想每次麻烦输入,执行 echo 'install: --no-rdoc --no-ri' > ~/.gemrc 新建并写入配置文件即可。

rvm 的 gem 默认会从 ~/.vimrc 以及 $ruby_path/etc/gemrc 下读取配置文件。后者可以通过 IRB 中执行 Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE 查看。

安装 Rdoc/ri 文档

删除 gem 文档后,使用 rvm doc generate 生成当前版本 Ruby 的文档,涵盖核心类和标准库。生成的 Html 文档会存放在 /.rvm/docs 下。

命令 ri 的使用示例:

ri Array#sort
ri IO.readlines
ri String
ri gsub
ri File::dirname

还可以加入一些常用的 gem 的文档,比如 nokogiri,gem rdoc nokogiri -v 1.5.0

标签: doc rails ruby