运行 来自 Rails 的 Sinatra 应用程序破坏了 CTRL-C 行为

Running a Sinatra app from within Rails breaks CTRL-C behaviour

here 所述,Rails 为 INT 信号创建陷阱。

我有一个 Rails 应用程序可以在单独的线程中启动 Sinatra 应用程序。

Thread.new do
  begin
    SinatraApp.run!
  rescue => e
    puts e.message
  end
end

似乎 运行 Sinatra 应用程序在单独的线程中导致我的 Rails 应用程序不再响应 INT 信号,这意味着我无法通过 CTRL-C 终止它。 Sinatra 应用 "steals" 所有 INT 信号。

我该如何解决这个问题?是否可以配置我的 Rails 应用程序,以便 CTRL-C 杀死它和 Sinatra 应用程序?

我的 Sinatra 应用程序是通过 WEBrick 启动的。我发现使用另一个基于 JRuby 的服务器,例如 Puma or Trinidadtrap 标志设置为 false),解决了问题。

This answer帮我找到了解决办法。