我想知道如何在rails中实现类似cron的功能。
例如,您有一个成员模型。每次新会员注册时,我的系统都会发送短信欢迎信息。但是,如果此用户之前受到过欢迎,请不要再次发送。因此,每隔10分钟,我想查看会员表,看看我应该将消息发送给谁。
这只是一个例子,我知道否则更容易实现。但是我想知道是否有像任务一样的cron工作,它必须查看活动记录
1)我应该把脚本放在哪里? 2)直接通过活动记录访问数据库是一个好习惯吗? 3)我应该随时使用宝石吗?或者在这种情况下使用system cron更容易实现?
谢谢!
答案 0 :(得分:2)
每当有一种"包装"系统cron周围的工具;没有理由编写自定义批处理来设置rails环境和启动任务,就像完成这项工作一样。 它与capistrano和mina很好地兼容,两者都能够在部署期间更新crontab。
请查看whenever documentation和mina documentation,以便更清楚地了解。
干杯!
答案 1 :(得分:0)
这称为异步作业。 Resque和Sidekiq是最受欢迎的解决方案。
或者您可以创建一个rake任务并将其放入或者直接放入cron。当然,在rake任务中使用ActiveRecord是完全可以的。