Наконец, я запускаю другой процесс 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 закрывается, также уничтожает открытый поток.