Rails中的Cron解决方案很多,而且相当不错。我不是在纠结这个。
相反,我遇到的麻烦是让用户创建自己的重复任务(如提醒)-特别是如何建模和存储在数据库中(一个好的UI也是不平凡的-如果有代码的话会很棒)。谷歌日历是一个很好的例子(UI添加一个事件,而不是整个日历)...他们应该能够做到每天下午1点CST,或周一/周三/周五,或每周,等等。无论使用什么样的cron解决方案,都需要轮询数据库,以查看在该时间需要发送哪些提醒,等等。
有人在rails中看到过一个很好的插件/gem吗?似乎有什么东西在那里,但我还没有找到它。
4条答案
按热度按时间j8yoct9x1#
我最终推出了自己的解决方案,因为我不需要任何超级花哨的东西。
基本上,我添加了一个
next_run
datetime和interval
字符串列到数据库中,这是(天,周等)之一。然后设置要运行的cron作业,查找任何已经过去的next_run
日期。它运行它们,然后根据interval
列将next_run
设置为将来的某个时间点。简单,但为我的需要工作。
jvidinwx2#
目前正在考虑使用这样的插件将递归存储在表http://github.com/fnando/recurrence/tree/master中
每个提醒都有一个重复对象,提醒也会保留一个日期时间字段,当它应该发送下一个提醒时。然后cron就可以。。
如果有更好的解决方案,或者我走错了路,总是感谢输入。
cetgtptt3#
我总是发现ical(RFC,而不是程序)解决方案是处理重复事件的最佳方法。有几个很好的Ruby库可以处理ical,最新的是ri_cal。
jhdbpxl94#
我目前遇到了这个问题,我正在考虑的解决方案如下:
其中period可以是1(每天)、7(每周)或14(每隔一周)。
如果你想支持其他类型的日程安排,比如每个月、工作日、周末等,你可以添加一个名为“schedule”的列,并使用常量来表示不同的日程安排类型。您也可以使用enum plugin。