Чтение документов в irb - PullRequest
       21

Чтение документов в irb

5 голосов
/ 12 августа 2011

Одна вещь, которую я скучаю по ipython, это есть? оператор, который выкапывает документы для определенной функции.

Я знаю, что у ruby ​​есть аналогичный инструмент командной строки, но вызывать его крайне неудобно, пока я в IRB.

Имеет ли ruby ​​/ irb что-нибудь подобное?

Ответы [ 3 ]

6 голосов
/ 14 августа 2011

Pry - версия IPython для Ruby, она поддерживает команду ? для поиска документации по методам, но использует несколько иной синтаксис:

pry(main)> ? File.dirname

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

visibility:  public
signature:  dirname()

Returns all components of the filename given in file_name
except the last one. The filename must be formed using forward
slashes (/'') regardless of the separator used on the
local file system.

   File.dirname("/home/gumby/work/ruby.rb")   #=> "/home/gumby/work"

Вы также можете посмотреть исходный код с помощью команды $:

pry(main)> $ File.link

From: file.c in Ruby Core (C Method):
Number of lines: 14

static VALUE
rb_file_s_link(VALUE klass, VALUE from, VALUE to)
{
    rb_secure(2);
    FilePathValue(from);
    FilePathValue(to);
    from = rb_str_encode_ospath(from);
    to = rb_str_encode_ospath(to);

    if (link(StringValueCStr(from), StringValueCStr(to)) < 0) {
    sys_fail2(from, to);
    }
    return INT2FIX(0);
}

См. http://pry.github.com для получения дополнительной информации:)

5 голосов
/ 12 августа 2011

Вы можете начать с

irb(main):001:0> `ri Object`

Хотя вывод этого меньше, чем читаемый. Вам нужно отфильтровать некоторые метасимволы.

Фактически, кто-то уже сделал драгоценный камень для него

gem install ori

Тогда в IRB

irb(main):001:0> require 'ori'
=> true
irb(main):002:0> Object.ri
Looking up topics [Object] o
= Object < BasicObject

------------------------------------------------------------------------------
= Includes:
Java (from gem activesupport-3.0.9)

(from gem activesupport-3.0.9) [...]
3 голосов
/ 12 августа 2011

Нет, это не так.Python имеет строки документации:

def my_method(arg1,arg2):
  """ What's inside this string will be made available as the __doc__ attribute """
  # some code

Итак, когда ? вызывается из ipython, он, вероятно, вызывает атрибут __doc__ объекта.У Руби этого нет.

...