Где я могу увидеть исходный код для классов в моей текущей рубиновой инсталляции?

Я новичок в ruby, но, тем не менее, я установил различные версии Ruby с использованием RVM. Вот вывод моей 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? (Я знаю, это чрезвычайно важный вопрос, но мне нужно знать.)

Мне нужно было взглянуть на источник Array в течение долгого времени.

Заранее спасибо!

PS. На какой класс вы посоветуете посмотреть, хочу ли я стать лучшим программистом в ruby?

2 ответа

Решение

Самый крутой гаджет для просмотра кода, который я нашел, это 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.

Другим полезным инструментом для просмотра C-источника для Ruby является перекрестная ссылка на код Ruby:
http://rxr.whitequark.org/

Тем не менее, сейчас, похоже, он упал, но, надеюсь, скоро снова будет.

Array частично реализован в C из соображений производительности, поэтому для Array вам потребуется загрузить исходный код Ruby.

Другие вопросы по тегам