【问题标题】:Where can I see the source code for classes within my current ruby intallation?我在哪里可以看到当前 ruby​​ 安装中的类的源代码?
【发布时间】:2011-08-18 15:41:38
【问题描述】:

我是 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​​ 程序员,你推荐看哪门课?

【问题讨论】:

  • 查看这些类的源代码不会帮助您成为更好的 ruby​​ 程序员,因为它们部分是用 C 编写的。您可以查看 SO 以获取有关 ruby​​ 编程的书籍推荐。拿起镐子书,看看 ruby​​ 标准库的 api...
  • "看看 ruby​​ 标准库的 api" 这正是我想看的。可以给个链接吗?
  • 认真的吗?尝试去谷歌并输入:ruby api

标签: ruby load-path


【解决方案1】:

目前我发现的最酷的代码浏览小工具是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/

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

【讨论】:

  • 酷,这正是我想要的。现在,有没有办法输出我正在查看的文件的位置?那真是太好了。
  • @user - Pry 将显示 Ruby 源代码的完整路径。对于 C 代码,它似乎只显示纯文件名,但您可以通过自己从 ruby​​-lang.org 下载 Ruby 源代码包轻松找到它。
  • 嘿,pry 实际上只能显示方法的来源——整个类(尤其是 C 类)的来源将是巨大的,进入 1000 行代码并没有多大用处。而是选择您对课程感兴趣的方法,Pry 将显示该方法的来源。
【解决方案2】:

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

【讨论】:

  • 这可能会随着时间的推移而改变。您目前可以在这里浏览它:github.com/ruby/ruby。如果之前的链接失效,请查看官网ruby-lang.org
猜你喜欢
  • 2016-04-04
  • 2010-09-20
  • 2018-06-21
  • 1970-01-01
  • 2021-12-09
  • 2011-06-26
  • 2019-06-03
  • 1970-01-01
  • 2011-08-31
相关资源
最近更新 更多