如何处理Sinatra中的陷阱

问题描述 投票:0回答:1

我想捕获陷阱,并且需要在退出Sinatra应用程序之前执行自定义代码。我需要等到线程执行完成后才能从Sinatra退出。

require 'sinatra'

trap('INT') do
 puts "Trapped"
 @th.join
 exit(99)
end

get "/test" do
 "Hello World!"
 @th = Thread.new {sleep 30}
 puts @th
end  

如果我按Ctrl + C,则应等待线程完成。

ruby sinatra
1个回答
0
投票

您可以在应用关闭之前使用at_exit运行代码。

如果需要在at_exit中使用直到运行时才需要的变量,可以尝试使它们成为全局变量。例如,

at_exit
© www.soinside.com 2019 - 2024. All rights reserved.