我想捕获陷阱,并且需要在退出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,则应等待线程完成。
您可以在应用关闭之前使用at_exit运行代码。
at_exit
如果需要在at_exit中使用直到运行时才需要的变量,可以尝试使它们成为全局变量。例如,