在我的Rails应用程序中,用户可以订阅一些事件。我想在活动开始前24小时向用户发送邮件。在Rails应用程序中发送自动邮件
我不知道如何实现。一个耙子任务?是否有一些宝石或一些最佳实践要遵循?
谢谢!
编辑:
我想,我的cron必须每分钟运行一次,以获取每个启动24小时的事件。但是如果cron停止,或者需要一分多钟,我不能跳过一些电子邮件。换句话说,我怎么能确定我没有两次发送同一封电子邮件?
在我的Rails应用程序中,用户可以订阅一些事件。我想在活动开始前24小时向用户发送邮件。在Rails应用程序中发送自动邮件
我不知道如何实现。一个耙子任务?是否有一些宝石或一些最佳实践要遵循?
谢谢!
编辑:
我想,我的cron必须每分钟运行一次,以获取每个启动24小时的事件。但是如果cron停止,或者需要一分多钟,我不能跳过一些电子邮件。换句话说,我怎么能确定我没有两次发送同一封电子邮件?
退房:
http://railscasts.com/episodes/206-action-mailer-in-rails-3
用于发送邮件和
http://railscasts.com/episodes/164-cron-in-ruby-revised
使用每当建立一个cron打电话给你的邮件
编辑:刚才看到你评论。在这种情况下,我想看看使用类似resque调度或sidekiq等价的:
https://github.com/bvandenbos/resque-scheduler
那么你可以做这样的事情:
Resque.enqueue_at(24.hours.from_now, SendFollowUpEmail, :user_id => current_user.id)
sidekiq例如:
FollowUpEmailer.perform_in(24.hours.from_now, current_user.id)
我已经使用sidekiq。事实上,我并不需要cron。我只需要在after_create中添加你的线,对吧?!如果用户取消订阅活动,是否有取消电子邮件的方法? – 2013-02-19 21:32:00
我不认为有一种方法见:https://github.com/mperham/sidekiq/pull/257,最后的评论有迈克说,你的工作应该检查,看它是否应该被发送。在这种情况下,我只需要:send_email如果user.subscribed?在我的工作 – rainkinz 2013-02-19 21:36:35
应该很容易实现。非常感谢!唯一的缺点我看到的是,如果我的服务器崩溃或重新启动,我失去了我的sidekiq队列中的所有邮件... – 2013-02-19 21:41:17
https://github.com/mperham/sidekiq/pull/257
这将帮助您在预定的时间内解决自动邮件系统!
你没有尝试将你的一些单词输入到谷歌中,是吗? – pduersteler 2013-02-19 21:19:52
可能的重复[一个cron作业的rails:最佳实践?](http://stackoverflow.com/questions/285717/a-cron-job-for-rails-best-practices) – pduersteler 2013-02-19 21:20:16
当然,我做了,但它不是同一个问题。请在downvoted之前尝试理解!也许我必须澄清我的问题。这不是一个简单的cron。我的cron必须每分钟运行一次,以获得24小时内开始的每个活动。但是,如果cron的停止,或需要超过一分钟,我不能跳过一些电子邮件。换句话说,我怎么能确定我没有两次发送同一封电子邮件? – 2013-02-19 21:26:27