1

我是 ruby​​ 新手,但我已经使用 RVM 安装了各种版本的 Ruby,这是我的 LOAD_PATH 的输出

ruby-1.9.2-p136 :001 > puts $LOAD_PATH
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/i686-linux
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1/i686-linux
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1
/home/jose/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/i686-linux

好的。所以这里的问题是,在这些目录中的哪里可以看到类的源代码,如 Array 或 Time ?(我知道,这是一个非常n00b的问题,但我需要知道。)

很长一段时间以来,我一直需要查看 Array 的来源。

提前致谢!

PS。如果我想成为一个更好的 ruby​​ 程序员,你推荐看哪门课?

4

2 回答 2

5

到目前为止我发现的最酷的代码浏览小工具是pry: http:
//pry.github.com/

这是一个irb有很多好东西的替代品。一个示例会话,您可以看到如何使用它浏览代码(您还将看到它可以显示类的 C 实现):

> pry
pry(main)> show-
show-command  show-doc      show-input    show-method   show-source
pry(main)> show-source Array

From: object.c in Ruby Core (C Method):
Number of lines: 6

static VALUE
rb_f_array(obj, arg)
    VALUE obj, arg;
{
    return rb_Array(arg);
}
pry(main)> cd Array
pry(Array):1> show-source each

From: array.c in Ruby Core (C Method):
Number of lines: 12

VALUE
rb_ary_each(ary)
    VALUE ary;
{
    long i;

    RETURN_ENUMERATOR(ary, 0, 0);
    for (i=0; i<RARRAY(ary)->len; i++) {
    rb_yield(RARRAY(ary)->ptr[i]);
    }
    return ary;
}
pry(Array):1>

Pry 当然也可以列出类的 Ruby 源代码。

浏览 Ruby 的 C 源代码的另一个有用工具是 Ruby 代码交叉参考:
http ://rxr.whitequark.org/

但是现在它似乎下降了,但希望它很快会再次上升。

于 2011-08-18T15:59:24.817 回答
0

出于性能原因,Array 部分在 C 中实现,因此对于 Array,您需要下载 Ruby 源代码。

于 2011-08-18T15:46:19.843 回答