我有一个导轨和nginx的,Postgres的,和美洲狮一个Ubuntu服务器上运行的应用程序4.2.3和我使用Capistrano的部署进行延时工作。我的应用程序的Rails应用程序部署使用服务看似已删除的文件
用户可以发送大量电子邮件进行使用几种不同的电子邮件模板我提供和利用的delayed_job的宝石。最近,我更新了两个电子邮件模板,并且偶尔发现(可能是500次中的20次)电子邮件模板的旧版本将发送出去,而不是当前版本。我梳理了我的应用程序代码,我很满意应用程序中的任何位置都不再存在旧版本的模板。
更重要的是,用户可以通过提供自己的身体文本编辑模板,而且,当一个旧版本的电子邮件模板的发送,它与用户指定了正确的正文发送。就好像在服务器上运行我的应用程序的旧版本,偶尔会发送电子邮件。
是否有可能以某种方式为我使用Capistrano的更新我的部署,旧的应用程序保持运行,有时工作开始关闭delayed_job的队列?虽然Capistrano只保留了我的应用程序的5个最新版本,但它们都没有使用旧的电子邮件模板。因此,如果是这种情况,旧的应用程序将需要完全保存在内存中 - 所以这似乎不可能。
任何人有我可以追求什么想法吗?我很难理解可能导致这种情况的原因(或者甚至可能会出现这种问题)。非常感谢您的帮助!
(PS:电子邮件利用premailer宝石的,虽然我不明白怎么会参与)
是否有可能在delayed_job的进程不会重新启动展开时之间,并运行基于关闭旧代码? – Dharam
@Dharam,我的假设是'delayed_job'进程不包含运行作业所需的所有逻辑,而只是触发当前应用程序在适当的时间运行作业。不过,我现在要研究这个问题。我会回复我发现的。谢谢! – John