如何返回(到Interactive Ruby Shell)调用方法时运行的代码

时间:2019-01-29 16:33:33

标签: ruby

在其他语言中,我看到了显示构成函数或方法的代码的方法。有没有办法在IRB中做到这一点?

例如,在R中,您可以简单地键入不带()的函数,它会告诉您调用该函数时将运行什么代码。简单示例here

IRB是否有可能? (最好不要使用pry或任何其他宝石)

1 个答案:

答案 0 :(得分:0)

引用https://stackoverflow.com/a/46966145/580346

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类:

# ~/.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

将上面的代码粘贴到您的irb中,然后调用YourConstant.method(:your_method).source