gpt4 book ai didi

ruby-on-rails - 使用日常 cron 作业在 Rails 中使用使用 Ice Cube 创建的事件的正确方法

转载 作者:行者123 更新时间:2023-12-04 01:12:57 27 4
gpt4 key购买 nike

我想使用 Rails 中的 Ice Cube gem 创建重复事件 - 我的问题是,我如何正确或有效地使用这些重复规则来触发实际事件?

这方面的一个例子是经常性发票。

假设我有一个每周一次的 Ice Cube 循环设置,我使用 to_yaml 将它保存到一个循环发票行。我现在在数据库中有一行带有序列化的重复规则。我可以想象使用它的唯一方法是遍历数据库中的每一行,对保存的重复规则进行反序列化并检查它是否需要在今天使用 schedule.occurs_on?(Date.new) 运行 - 然后将其放入每天运行的 cronjob:

items = RecurringItem.find(:all)
items.each do |item|
schedule = Schedule.from_yaml(item.schedule_yaml)
if schedule.occurs_on?(Date.new)
#if today is a recurrence, do stuff!
end
end

这对我来说看起来非常低效 - 但我可能完全错了。有没有更好的方法来使用冰块?

最佳答案

Ice Cube 似乎专门设置非常复杂的时间表(发生在第 1 个和第 4 个星期三,但仅限于偶数天,而不是周末等)

如果这就是您所需要的,那么您描述的任务可能是每天按照这种复杂的时间表运行大量任务的最有效方法。如果您的日程安排不需要那么复杂,那么您可以查看任何时候(如 MatthewFord 提到的那样),它只使用 cron 日程安排来设置要执行的任务,但这适用于管理员类型的任务,因此需要要编辑的配置文件,如果您需要通过应用程序界面添加和删除内容,则该文件不起作用。

使用 Ice Cube 的另一种选择是让每月的 cron 检查每个计划,并设置另一个表来定义下个月的哪些天必须运行哪些事件。 (每一行都有一个日期和一个任务定义),并且您的每日计划可以从该表中进行选择...

每次应用程序中的一个时间表发生变化时,您还必须提前一个月更新该表......有点麻烦,所以除非您每天查看数十万个时间表,否则可能是不值得麻烦。

关于ruby-on-rails - 使用日常 cron 作业在 Rails 中使用使用 Ice Cube 创建的事件的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6902659/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com