2013-03-19 1 views
0

В примере файла конфигурации для Puma, он говорит следующее за on_restart функции:puma hot restart on_restart функция: необходимо для Rails-приложений?

код для запуска перед выполнением перезагрузки. Этот код необходимо закрыть файлы журналы, соединение базы данных и т.д.

Мне нужно реализовать это для приложения Rails, чтобы закрыть подключение к БД и логфайлу, или в том, что соблюдено автоматически делать? Если нет, как я на самом деле все это делаю?

ответ

0

Нет, вы этого не сделаете, Rails заботится о перезагрузке вашего кода автоматически. Но эта поддержка перезагрузки кода ограничена. Например, изменения в application.rb не применяются до перезапуска сервера приложений.

Но я бы порекомендовал Phusion Passenger над Puma. Phusion Passenger намного проще настроить, особенно когда вы попадаете в производство. Phusion Passenger напрямую интегрируется в Apache и Nginx и предоставляет расширенные функции, такие как динамическое управление рабочими. Phusion Passenger очень зрелый, стабильный и эффективный и используется такими, как New York Times, Symantec, AirBnB и т. Д.

+1

Спасибо! Также просто чтобы выбросить его там, мне бы хотелось увидеть сравнительное сравнение Passenger 4 и Puma с другими параллельными серверами приложений ruby –

0

Я обнаружил, что использование Redis в качестве моего поставщика Rails.cache вызывает страницу с ошибкой по первому запросу каждый раз, когда перезагружается сервер Rails/Puma. Ошибка я получил:

Redis :: InheritedError (. Пробовали использовать соединение из дочернего процесса без повторного подключения Вам необходимо подключиться к Redis после разветвления.)

Чтобы обойти эту проблему ошибка, я ничего не добавляет к on_restart, но надо добавить код on_worker_boot (Я бегу Puma с рабочими = 4):

пума-config.rb

on_worker_boot do 
    puts "Reconnecting Rails.cache" 
    Rails.cache.reconnect 
end 

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

  • Нет связанных вопросов^_^