У меня есть приложение rails 4.2.3, работающее на сервере ubuntu с nginx, postgres и puma, и я использую Capistrano для развертывания.Развертывание приложения Rails с использованием отложенной работы, казалось бы, удаленных файлов
Пользователи моего приложения могут отправлять массовые электронные письма с использованием нескольких разных шаблонов электронной почты, которые я предоставляю, и используя камень Delayed_Job. Недавно я обновил два шаблона электронной почты, и я обнаружил, что иногда (возможно, 20 раз из 500) отправлена старая версия шаблона электронной почты, а не текущая версия. Я прочел код приложения, и я доволен тем, что старая версия шаблона больше не существует в приложении.
Кроме того, пользователи могут редактировать шаблон, предоставляя свой собственный текстовый текст, а при отправке старой версии шаблона электронной почты он отправляется с правильным текстовым текстом, который пользователь указывает. Это похоже на старую версию моего приложения, работающего на сервере, который иногда командует отправкой электронной почты.
Возможно ли, что как только я обновляю свое развертывание с помощью Capistrano, старый процесс приложения остается включенным и иногда начинает работать с очереди delayed_job? Однако Capistrano сохраняет только 5 самых последних версий моего приложения, и ни один из них не использует старый шаблон электронной почты, который используется. Поэтому, если это так, старый процесс приложения должен быть полностью сохранен в памяти, поэтому это не представляется возможным.
У кого-нибудь есть идеи, которыми я могу заниматься? Я в тупике о том, что может быть причиной этого (или как эта проблема даже возможна). Большое спасибо за любую помощь!
(PS: электронная почта использовать в premailer драгоценного камня, хотя я не понимаю, как это могло быть вовлечено)
Возможно ли, что процесс delayed_job не перезапускается между разворачивает и работает на основе от старого кода ? – Dharam
@Dharam, мое предположение заключалось в том, что процессы 'delayed_job' не содержат всю логику, необходимую для запуска задания, а просто запускают текущее приложение для запуска задания в соответствующее время. Я собираюсь изучить это прямо сейчас, хотя. Я отвечу тем, что найду. Благодаря! – John