要调试 Ruby 代码,您需要两个 gem:pry 和 pry-byebug。
这是一个简单的 Ruby 脚本,它将两个数字相加并打印它们的总和。注意底部的binding.pry 语句。该语句添加了一个断点并告诉 Ruby 在该点停止执行。此时,我们可以检查当前状态,步入和退出方法,退出或继续执行。
require "pry"
require "pry-byebug"
class Sandbox
def add(a, b)
sum = a + b
sum
end
end
puts "Welcome to the Sandbox"
binding.pry
box = Sandbox.new
sum = box.add(3, 4)
puts "Sum = #{sum}"
如果您要在终端中运行此代码,您会看到以下代码。 Pry 暂停程序,终端正在等待您的输入。请注意行号旁边的箭头,它告诉您控件的确切位置。
➜ sandbox (main) ✗ ruby lib/sandbox.rb
Welcome to the Sandbox
From: /../sandbox/lib/sandbox.rb:15 :
10:
11: puts "Welcome to the Sandbox"
12:
13: binding.pry
14:
=> 15: box = Sandbox.new
16: sum = box.add(3, 4)
17:
18: puts "Sum = #{sum}"
[1] pry(main)>
在终端上输入next 转到下一行。
[1] pry(main)> next
From: /../sandbox/lib/sandbox.rb:16 :
11: puts "Welcome to the Sandbox"
12:
13: binding.pry
14:
15: box = Sandbox.new
=> 16: sum = box.add(3, 4)
17:
18: puts "Sum = #{sum}"
[1] pry(main)>
在终端中输入 step 以进入 add 方法。 Pry 将带您进入 add 方法。
[1] pry(main)> step
From: /../sandbox/lib/sandbox.rb:6 Sandbox#add:
5: def add(a, b)
=> 6: sum = a + b
7: sum
8: end
在调试期间,您可以通过在终端中输入 ls 或简单地输入变量名来检查局部变量。例如,输入a 会显示a 变量的值。
[1] pry(#<Sandbox>)> a
=> 3
键入up 退出此方法,这会使您在堆栈中上一层。我经常这样做,尤其是当我在调试时发现自己处于框架代码中时。
[2] pry(#<Sandbox>)> up
From: /Users/akshayk/Dev/ruby/sandbox/lib/sandbox.rb:16 :
11: puts "Welcome to the Sandbox"
12:
13: binding.pry
14:
15: box = Sandbox.new
=> 16: sum = box.add(3, 4)
17:
18: puts "Sum = #{sum}"
要继续执行直到控件到达下一个断点,请键入continue。输入exit 退出调试。
如果您想在任何时间点查看自己的位置,请输入 @ 或 whereami,pry 会显示当前断点。当您阅读帮助时(通过在调试时在终端中输入帮助)或已清除终端并想查看执行时的位置,您可能会发现这很有帮助。
这就是调试 Ruby 代码的方式。希望对您有所帮助。
来源:How to Debug Ruby Code