2012-06-19 2 views
7

Я использую Sinatra для своего webapp. У меня есть код очистки, который я хочу выполнить, когда мое приложение отключается. Есть ли крючок для этого в Синатре или мне нужно использовать отдельный механизм?Где я могу поместить код в Sinatra, который я хочу выполнить, когда приложение завершено?

ответ

8

Посмотрите на Kernel#at_exit, я не понимаю, почему он не должен работать в приложении Sinatra, если вы определите такой блок где-то в главном файле приложения.

Обновление: Согласно комментарию мата, вы должны определить свой обработчик at_exit, прежде чем требовать Sinatra.

+0

У меня создалось впечатление, что вызывается только после выхода всех потоков. Я сам испытаю это. Одна из конкретных вещей, которые мне нужно сделать, это закрыть некоторые потоки, так что, если это так, это не сработает для меня. – pquimo

+0

Возможно, это не сработает, в зависимости от того, как вы начинаете Sinatra, поскольку [Sinatra использует 'at_exit') (https://github.com/sinatra/sinatra/blob/v1.3.2/lib/sinatra/main.rb#L25), чтобы запустить свой встроенный сервер, поэтому любой обработчик 'at_exit', который вы добавляете, фактически запускает запуск _before_ Sinatra. – matt

+0

Интересно. Интересно, должен ли я удалить свой ответ или сохранить его на время. Может быть, я подожду, пока @pquimo не вернется. –

Смежные вопросы