ruby:如何在调试时进入任意函数

Dan*_*hka 6 ruby debugging pry byebug

假设我在调试时停止了点:

def get_data
    byebug
 => @cache ||= calculate_data
end
Run Code Online (Sandbox Code Playgroud)

并且@cache有价值,所以step功能calculate_data不会被执行.但我需要检查calculate_data在这个确切的运行时点内部发生了什么.

我只能执行calculate_data并看到它在控制台输出结果,但我可以执行功能,从调试控制台,并在同一时间step into吗?(使用byebug或其他一些调试工具).

目标 - calculate_data在任意时间检查逻辑,特别是在填充时get_data调用逻辑@cache.

Dan*_*hka 3

使用pry-moves,您可以从当前上下文中执行任意函数的单独调试:

def get_data
    binding.pry
 => @cache ||= calculate_data
end
Run Code Online (Sandbox Code Playgroud)

键入debug calculate_data以运行calculate_data并停止在其中的第一行。