ruby-on-rails - rails : send mail after some time has passed

标签 ruby-on-rails plugins redmine

我有以下情况:
1. 有人在Redmine中创建任务
2. 此任务完成(或未完成)某些事情
3. 如果任务创建后 3 天后状态不正确,请发送电子邮件给感兴趣的人。

我的问题是如何使用 Rails 在三天内安排一封电子邮件(或检查是否需要电子邮件的任务)?到目前为止,我能想到的唯一选择是创建一些 rake 任务并每隔几分钟运行一次。还有更好的选择吗?

最佳答案

您有几个选择。您可能想查看Active Job ( rails > 4.2)。这使您可以安排作业在指定时间段后运行:

MyJob.set(wait_until: Time.now + 3.days).perform_later(record)

如果您使用的是 4.2 之前的 Rails 版本,则 DelayedJobSidekiqResque可用于。无论如何,Active Job 本质上是此类内容之上的一层,因此以后迁移到该层应该不会太痛苦。

或者,如果您不需要在 3 天后检查,那么您可以扫描需要使用 cron 生成电子邮件的任务(whenever 是一个很好的包装器)。您可以根据需要进行多次扫描,尽管每隔几分钟可能会过多,并且这意味着您不必在服务器上设置排队后端。

这确实意味着您必须找到需要为其生成电子邮件的任务,而使用排队系统您将确切地知道您正在处理哪个任务。然而,似乎很多任务都不需要电子邮件,因此积极寻找需要电子邮件的任务可能会更有效。

关于ruby-on-rails - rails : send mail after some time has passed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28211001/

相关文章:

ruby-on-rails - Rails 5 - 具有嵌套属性的 find_or_create_by

ruby-on-rails - rails 5.2 : form_with requires "local: false" for AJAX requests?

jquery - Rails jquery select2

jQuery 省略号插件不适用于 "max-height"

ruby - 无法启动瘦服务器 Ruby Gem

javascript - 如果禁用了 Javascript,则停止加载页面

plugins - CRM 2011 - 在 C# 中按字段值查找记录

javascript - iframe chrome 扩展加载速度慢

apache - Redmine.pm 不适用于 Authen::Simple::LDAP

mysql - 将 mysql 转储导入新的 Redmine 实例时出现未知列 'tokens.update_on'