慕慕森
没有依赖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]如果您想更方便地使用它,可以打开Method该类:# ~/.irbrcclass Method def source(limit=10) file, line = source_location if file && line IO.readlines(file)[line-1,limit] else nil end endend然后打电话 method.source根据Pry在codde-browing中的文档,使用Pry,您可以使用show-method来查看方法源,甚至可以看到pry-doc已安装的一些ruby c源代码。注意,我们也可以使用pry-doc插件查看C方法(从Ruby Core);我们还展示了show-method的替代语法:pry(main)> show-method Array#selectFrom: array.c in Ruby Core (C Method):Number of lines: 15static VALUErb_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;}