Я пишу приложение, которое иногда требует очень длительных запросов к БД. Я хотел бы выполнить некоторый код, если клиент перезагружает или закрывает страницу, чтобы делать что-то с запросами БД.
Я надеялся, что у Рэка будут какие-то крючки в этом роде, но, судя по тому, что я видел, это уровень глубже, чем у Рэка.
Пока единственный способ, который я могу найти, заключается в самом тонком, путем исправления обезьяной функции unbind в тонком классе Connection:
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.
Есть ли способ лучше?
EventSource#close
на стороне javascripts) - person Andrea Amantini   schedule 29.03.2015