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