【问题标题】:Running a Sinatra app from within Rails breaks CTRL-C behaviour在 Rails 中运行 Sinatra 应用程序会破坏 CTRL-C 行为
【发布时间】:2015-07-05 13:02:34
【问题描述】:

正如here 所解释的,Rails 会在 INT 信号启动后立即为它创建一个陷阱。

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

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

似乎在单独的线程中运行 Sinatra 应用程序会导致我的 Rails 应用程序不再响应 INT 信号,这意味着我无法通过 CTRL-C 杀死它。 Sinatra 应用程序“窃取”了所有 INT 信号。

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

【问题讨论】:

    标签: ruby-on-rails multithreading sinatra jruby kill


    【解决方案1】:

    我的 Sinatra 应用程序正在通过 WEBrick 启动。我发现改用另一个基于 JRuby 的服务器,例如 PumaTrinidad(将 trap 标志设置为 false)解决了这个问题。

    This answer 帮我找到了解决方案。

    【讨论】:

      猜你喜欢
      • 2011-08-19
      • 1970-01-01
      • 2014-08-14
      • 2012-01-11
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      相关资源
      最近更新 更多