当前位置: 代码迷 >> 综合 >> Ubuntu(Dapper)下Ruby/Rails及配套RI文档系统安装手记
  详细解决方案

Ubuntu(Dapper)下Ruby/Rails及配套RI文档系统安装手记

热度:79   发布时间:2023-12-06 17:35:18.0
Ubuntu(Dapper)下Rails及配套RI文档系统安装手记

6月底收到Ubuntu 6.06CD并安装好之后,大部分精力都花在对系统的优化和美化方面,Ruby/Rails也一直用的是资源库的自带版本。每次看到那个i486-linux就不爽。偶的Centrino本本竟当i486来使。速度慢先不说,还老是出问题,早就有将其彻底清除的念头。
从Ruby官方站点下载了ruby-1.8.4.tar.gz,还顺带apt-get了readline和zlib的dev包,编译用了3、4分钟的样子。
$ ruby -v
ruby 1.8.4 (2005-12-24) [i686-linux]

再从RubyForge下载并安装了rubygems 0.9.0,几秒钟就搞定了。

然后就是gem install rails --include-dependencies -r
...
这步需要花点时间,视网络状况不定
...
$ rails -v
Rails 1.1.4
运行了一下depot,正常!

安装过程中,偶在其提示中发现有产生ri文档的提示。??难道现在可以像查看Ruby系统库一样来用ri查看Rails文档吗?试试看:
$ ri link_to
Nothing known about link_to
$ ri ActionController::Base#render
Nothing known about ActionController::Base#render
...是ri出状况了吗?
$ ri Dir
----------------------------------------------------------- Class: Dir
     tmpdir - retrieve temporary directory path

     $Id: tmpdir.rb,v 1.5.2.1 2005/12/15 15:57:05 matz Exp $

----------------------------------------------------------------------

Includes:
     Enumerable(all?, any?, collect, detect, each_cons, each_slice,
....................................................(略)

没有。正常呀
难道gem安装提示中的信息是假的。#$@######
老人家不是说过嘛--实践是检验真理的唯一标准。偶应该自己验证的,通过搜索yaml文件,在/usr/local/lib/ruby/gems/1.8/doc目录下发现了产生的ri和rdoc文档。嘿嘿,应该是ri没有发现这个目录。
按^L转到/usr/local/bin下(偶安装ruby时没用--prefix=/usr选项,这样以后要是需要用到ubuntu的ruby相关deb包时就不会发生冲突了,嘻嘻。这也是以前因为自编译Python,造成烦人的系统重装后汲取的教训。)发现了ri就在那里。在偶准备对其代码进行分析的瞬间,偶同一目录下发现了一个叫gemri的文件......咦???直觉告诉偶,这是ri的改进版。好奇的偶于是再次打开了Terminal:
$ gemri link_to
------------------------------- ActionView::Helpers::UrlHelper#link_to
     link_to(name, options = {}, html_options = nil,
     *parameters_for_method_reference)
----------------------------------------------------------------------
     Creates a link tag of the given name using an URL created by the
     set of options. See the valid options in the documentation for
     ActionController::Base#url_for. It's also possible to pass a
......(略)

哇咧。得来全不费功夫嘛。Haha
用她查看一下系统库试试:
$ gemri Dir
显示一大串错误信息。再用ri Dir一试,正常。
从开头一行“/usr/lib/ruby/1.8/rdoc/ri/ri_descriptions.rb:99:in `concat': cannot
convert nil into Array (TypeError)”得知,是ri_descriptions.rb出了问题。
于是偶将这条出错信息用Google一搜,找到了几十条相关资讯。根据经验,我首先查看来看自rubyforge.org中的那个网页,得知这是rdoc的一个bug。根据她给出的方案,偶注释掉/usr/lib/ruby/1.8/rdoc/ri/ri_descriptions.rb从95到100行的代码,并加入新代码。即:

     #if @comment.nil? || @comment.empty?
      #  @comment = old.comment
      #else
      #  @comment << SM::Flow::RULE.new
      #  @comment.concat old.comment
      #end    
      unless old.comment.nil? || old.comment.empty?
        if @comment.nil? || @comment.empty?
          @comment = old.comment
        else
          @comment << SM::Flow::RULE.new
          @comment.concat old.comment
        end
      end 

保存。问题解决了。将原来的ri改名为ri.off,再将gemri改为ri。
再在~/.bashrc文件的后端插入一行:export RI="-f ansi -w 70 -T"
这样ri就可以产生彩色输出。
末了,贴张图秀一下:^_^