Ruby on rails 在Ruby中优雅地退出线程

Ruby on rails 在Ruby中优雅地退出线程,ruby-on-rails,ruby,multithreading,http,mongrel,Ruby On Rails,Ruby,Multithreading,Http,Mongrel,我正在试用Mongrel并使用以下代码: require 'rubygems' require 'mongrel' class SimpleHandler < Mongrel::HttpHandler def process(request, response) response.start(200) do |head, out| head["Content-Type"] = "text/plain" out.wri

我正在试用Mongrel并使用以下代码:

require 'rubygems'
require 'mongrel'

class SimpleHandler < Mongrel::HttpHandler
    def process(request, response)
        response.start(200) do |head, out|
            head["Content-Type"] = "text/plain"
            out.write("Hello World!\n")
        end
    end
end

h = Mongrel::HttpServer.new("0.0.0.0", "3000")
h.register("/test", SimpleHandler.new)
puts "Press Control-C to exit"
h.run.join

trap("INT") do
    puts "Exiting..."
end
所以我试着把
trap(“INT”)
语句放在末尾,但它没有被调用。解决方案


谢谢。

如果您只想在没有堆栈跟踪的情况下退出,则无需捕获INT。控制c导致“中断”异常。因此,要让您的程序在control-C上退出而不出现难看的堆栈跟踪,请捕获该异常:

begin
  ... # do stuff
rescue Interrupt
  puts "Exiting..."
end
begin
  ... # do stuff
rescue Interrupt
  puts "Exiting..."
end