Я пишу приложение, которое иногда требует очень длительных запросов к БД. Я хотел бы выполнить некоторый код, если клиент перезагружает или закрывает страницу, чтобы сделать что-то с запросами БД.
Я надеялся, что у Рэка будут зацепки за эту штуку, но, судя по тому, что я видел, это уровень глубже, чем у Рэка.
Пока что единственный хук, который я могу найти, - это сам тонкий, с помощью монтирования-исправления функции unbind в классе тонкий соединения:
module Thin
class Connection < EventMachine::Connection
def unbind
# DO something here
@request.async_close.succeed if @request.async_close
@response.body.fail if @response.body.respond_to?(:fail)
@backend.connection_finished(self)
end
end
end
Это отменяет функцию отмены привязки Thin и позволяет мне подключиться к разъединению, вызываемому EventMachine.
Есть ли лучший способ?