运行 Thread 中的 Sinatra 应用程序无法运行

Running Sinatra app inside Thread doesn't work

我正在尝试 运行 新线程中的 Sinatra 应用程序,以便在我的脚本中也 运行 一些其他东西,但是当我这样做时:

require 'sinatra/base'

class App < Sinatra::Base
...some routes...
end

Thread.new do
  App.run!
end

没有任何反应,Sinatra 服务器未启动。为了实现这一目标,我还缺少什么吗?

最后我 运行 线程中的另一个 ruby 进程但是来自 Sinatra 应用程序,它工作得很好。

class App < Sinatra::Base
    threads = []

    threads <<
      Thread.new do
        Some::Other::Thing
      rescue StandardError => e
        $stderr << e.message
        $stderr << e.backtrace.join("\n")
      end

    trap('INT') do
      puts 'trapping'
      threads.each do |t|
        puts 'killing'
        Thread.kill t
      end
    end

    run!
end

并且我在 Sinatra 应用程序退出时添加了一个控件也杀死了打开的线程。