Senza dipendenze
method = SomeConstant.method(:some_method_name)
file_path, line = method.source_location
# puts 10 lines start from the method define
IO.readlines(file_path)[line-1, 10]
Se si desidera utilizzare questo più convenientemente, il vostro possibile aprire la classe Method
:
# ~/.irbrc
class Method
def source(limit=10)
file, line = source_location
if file && line
IO.readlines(file)[line-1,limit]
else
nil
end
end
end
E poi basta chiamare method.source
Con leva è possibile utilizzare la show-method
per visualizzare una fonte di metodo, e si può anche vedere qualche codice rosso rubino c sorgente con pry-doc
installato, secondo doc di curiosare in codde-browing
Nota che possiamo anche vedere i metodi C (da Ruby Core) utilizzando il plug-in pry-doc ; abbiamo anche mostrare la sintassi alternativa per lo show-metodo:
pry(main)> show-method Array#select
From: array.c in Ruby Core (C Method):
Number of lines: 15
static VALUE
rb_ary_select(VALUE ary)
{
VALUE result;
long i;
RETURN_ENUMERATOR(ary, 0, 0);
result = rb_ary_new2(RARRAY_LEN(ary));
for (i = 0; i < RARRAY_LEN(ary); i++) {
if (RTEST(rb_yield(RARRAY_PTR(ary)[i]))) {
rb_ary_push(result, rb_ary_elt(ary, i));
}
}
return result;
}
si vuol dire questo http://github.com/rdp/ri_for – allenwei
sì che è il pronti contro termine per esso – rogerdpack
Tutto questo non fa per me è la produzione un errore di segmentazione. :( – panzi