Ruby: 关于 ^C (ctrl+C) 命令行中断的漂亮文本
Ruby: Nice text on ^C (ctrl+C) command-line interrupt
我正在 Ruby 中编写一个小型命令行程序,用于查找特定文件夹中的更改。
这个程序每隔几秒重复一个循环,看是否有变化。要停止程序,用户可以使用 Ctrl+C(将 ^C 发送到控制台)。
现在,Ruby 在发生这种情况时发送以下堆栈跟踪:
^C./filename.rb:64:in `sleep': Interrupt
from ./filename.rb:64:in `block in parse'
from ./filename.rb:62:in `loop'
from ./filename.rb:62:in `parse'
from ./filename.rb:124:in `<main>'
我想将其更改为显示 Exiting now...
消息,类似于 Rails 等程序以这种方式关闭时显示的内容。
如何做到这一点?
执行 ctrl + c 只是向给定的 ruby 进程发送 SIGINT
信号。您可以通过拯救 Interrupt
:
来拦截它
begin
loop do
puts "foo bar baz"
end
rescue Interrupt
puts "\nExiting..."
end
我正在 Ruby 中编写一个小型命令行程序,用于查找特定文件夹中的更改。
这个程序每隔几秒重复一个循环,看是否有变化。要停止程序,用户可以使用 Ctrl+C(将 ^C 发送到控制台)。
现在,Ruby 在发生这种情况时发送以下堆栈跟踪:
^C./filename.rb:64:in `sleep': Interrupt
from ./filename.rb:64:in `block in parse'
from ./filename.rb:62:in `loop'
from ./filename.rb:62:in `parse'
from ./filename.rb:124:in `<main>'
我想将其更改为显示 Exiting now...
消息,类似于 Rails 等程序以这种方式关闭时显示的内容。
如何做到这一点?
执行 ctrl + c 只是向给定的 ruby 进程发送 SIGINT
信号。您可以通过拯救 Interrupt
:
begin
loop do
puts "foo bar baz"
end
rescue Interrupt
puts "\nExiting..."
end