我希望能够从请求中终止 Sinatra 应用程序,例如使用以下路线:
post '/terminate' do
Thread.current.kill
end
像这样实现它有点突然。我宁愿请求完成,返回 HTTP OK 消息,然后 Sinatra 优雅地关闭。
有一个钩子可以做到这一点吗?
编辑:
我的应用程序是一个轻量级的模拟服务器,用于接收 webhook 通知。我将在同一台机器上使用多个这样的服务器(不同的端口),所以需要避免任何全局的启动/停止方法。
我的要求是因为每个服务器都必须在自己的 Ruby 实例中运行,因此我的测试和服务器之间除了通过 REST 接口之外没有通信。
我正在使用默认thin
服务器来运行 Sinatra。到目前为止,我的代码只是 Sinatra::Base 的一个子类,run!
从代码中开始使用。这很好也很简单,我可以制作独立的脚本来实例化每个服务器,我只需要有一种方法来停止它们。