问题标签 [ice-cube]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
263 浏览

ruby-on-rails-4 - 使用带有 Formtastic 和 ActiveAdmin 的 Ice_Cube 的 select_recurring 时找不到表单助手。

使用 ActiveAdmin 在 Formtastic 中为Ice_Cube gem使用select_recurring表单助手时,我收到一个错误。unable to find input class for select_recurring

直接访问它(如下)适用于重复计划元素,但会破坏所有其余的形式f.input元素。

如何加入select_recurringActiveAdmin?

0 投票
1 回答
463 浏览

ruby - 通过ice_cube快速解释愤怒之拳/吸盘拳的重复规则

这可能不是最聪明的问题……对此感觉特别密集。我正在使用一个非常漂亮的宝石,Fist of Fury,通过 Sucker Punch 执行重复的后台任务:https ://github.com/facto/fist_of_fury 。正如 gem 的作者所说,重复规则是使用 ice cube gem https://github.com/seejohnrun/ice_cube构建的。

他举了一个经常性工作的例子:

我通过上面链接的 Fist of Fury 和 Ice Cube 的文档阅读,只是想确认我的理解......

  • 愤怒的拳头需要一个冰块规则在recurs {}括号中,recurs本质上是schedule从冰块替换
  • 您可以使用 Ice Cube 中的预定义规则,例如minutely在示例中或daily(2)(每隔一天),或者您可以定义自己的规则
  • 如果你定义了自己的规则,你可以把它放在 recur 的正上方,因为 ice cube 的 gem 已经安装了 Fist of Fury,类似于(导致每个月 13 日发生一次活动):

    rule = Rule.monthly.day_of_month(13) 重复 { rule }

如果后者是正确的,我很想知道如何为一天中的特定时间编写规则。类似的东西rule = Rule.daily(2).time_of_day(3)意味着我希望活动每隔一天凌晨 3 点进行一次。

0 投票
1 回答
488 浏览

ruby-on-rails - 冰块,如何为Sidetiq/Fist of Fury设置每天在特定时间的规则

根据我认为的文档(每天下午 3 点)

我得到的是一个随机的混乱。首先,无论何时我推送到 Heroku,它都会执行,然后似乎随机执行。所以对 Heroku 的最新推送是下午 1:30。它执行:下午 1:30 两次,下午 2 点一次,下午 4 点一次,下午 5 点一次。

想出了什么问题?

完整代码(注意这是为 Fist of Fury gem 准备的,但 FoF 深受 Sidetiq 的影响,因此 Sidetiq 用户的帮助也会很棒)。

结尾

0 投票
2 回答
2446 浏览

ruby-on-rails - 如何根据数据库中的重复计划安排 Sidekiq 作业?

我已经建立了一个Measurement基于MeasurementSettings 运行 s 的系统。每个设置都定义了一个使用ice_cube(以及一些其他测量属性)的计划。我可以为每个设置编辑此时间表,然后使用以下内容轮询下一次发生的事件:

这给了我一组时间戳,什么时候应该有Measurement.

现在,我还安装了 Sidekiq,我可以使用MeasurementWorker. 为此,我只需创建一个空Measurement记录,将其与其设置相关联,然后perform_async(或perform_at(...))此工作人员:

缺少的是我需要根据设置的时间表创建空测量。但是我该怎么做呢?

假设我有以下数据:

  • MeasurementSettingID 为 1,每日计划在 12:00 PM
  • MeasurementSetting使用 ID 2,每小时安排一个完整的小时(12:00 AM、01:00 AM 等)

现在我需要:

  • 创建一个Measurement使用设置 1,每天 12:00
  • 每隔整小时创建一个Measurement使用设置 2 的
  • 打电话给工人进行这些测量

但是怎么做?

我应该每分钟检查一次,是否有MeasurementSetting定义为now发生,然后创建空Measurement记录,然后使用 Sidekiq 以特定设置运行它们?

Measurement或者我应该提前生成带有它们的设置的空记录,并以这种方式安排它们?

实现这一目标的最简单方法是什么?

0 投票
2 回答
146 浏览

ruby - IceCube/Ruby 每 1 个月零 10 天的规则

是否可以制定一个像每 1 个月和 10 天这样的规则?显然 40 天是不正确的,因为月份中的天数是可变的,而且它不是按月中的一天或一周中的特定天计算的吗?

会产生的东西:

0 投票
1 回答
140 浏览

ruby - 当我想每两周运行一次工作时,我可以在 ice_cube gem 中指定第 0 周吗?

我在我们的 Rails 服务中有一项经常性的工作,每两周在星期五发送电子邮件。但是,根据我们的业务需求,“每两周”计划的第一周应该是本周,这意味着邮件应该在本周五发出,然后是 2 周,然后是 4 周,以此类推。

服务重新启动时,不应中断计划。例如,在本周五发送电子邮件后,如果我在周六重新启动服务,它不应该将作业安排到下周五 - 仍然应该是下周之后的一周的周五。总之,第0周要持之以恒,坚持这一周。

在 ice_cube 中可行吗?或者还有其他更好的解决方案吗?感谢!

0 投票
1 回答
1091 浏览

ruby - 计算ruby中两个范围(日期)数组的交集

给定两个大范围的数组...

当我做一个逻辑结合...

那我期待

感觉应该是...

但那是空的,因为没有一个范围是相同的

这是一个图形示例。

逻辑结合波形.

我已将 Infinity 包含在范围中,因为此问题的解决方案通常涉及将 Range 转换为 Array 或 Set

目前的解决方案 这是我目前通过速度和准确性测试的解决方案。我正在寻找意见和/或改进建议。第二个测试使用出色的IceCube gem 来生成日期范围数组。我的掩码方法中有一个隐含的假设,即每个计划中的日期范围出现不重叠。

用 Ruby 现有的核心方法不能做到这一点感觉很奇怪?我错过了什么吗?我发现自己相当定期地计算范围交叉点。

我还想到,您可以使用相同的方法通过传递单个项目数组来查找两个单个范围之间的交集。例如

我意识到我已经回答了自己的问题,但我想我会把它留在这里作为其他人的参考。

0 投票
1 回答
259 浏览

ruby - 如何在 ruby​​ 中为不同用户启用重复提醒?

目前,我的应用程序的用户为单个提醒设置了特定的日期和时间(使用 Chronic gem)。

我有一个每 10 分钟运行一次的 cron 作业,并检查提醒中的时间是否为 <Time.now此时,它会发送提醒并将该提醒标记为已发送。

但是,我希望他们能够指定重复提醒。客户应该能够说“每隔一天上午 10 点”。

我可以使用ice_cube它似乎经常出现的部分。然后我使用 Chronic 来计算开始时间,其中包含日期和循环时间。

但我没有一个好的方法让它重复发生,因为这些不是数据库中的单独事件。

这是我尝试过的:

```reminder = response.body['results'] #array of recurring alerts with start_epoch and 'via' d {reminder}

```

问题:

  • 有没有办法在不将每个特定的每日提醒写入数据库的情况下判断何时发送提醒?
  • 有没有更优雅的方式让用户在文本字符串中定义重复出现?
0 投票
1 回答
312 浏览

ruby-on-rails - 使用 ice_cube gem 创建重复事件

我正在尝试使用 ice_cube 和 recurring_select gems 创建重复事件。

这是我的 _form.html.erb 代码:

在我的控制器中,我有(除其他外):

如您所见,我想为一周中的每一天创建相同的事件,但实际上,如果我提交此表单,我的 :day 列仍然为空。

你能提供一些反馈吗?我不知道有什么问题

0 投票
1 回答
416 浏览

ruby-on-rails - 使用 ice_cube gem 创建组合调度规则

假设我希望每 2 周在每周的一天每 6 小时安排一次任务。我将如何实现这一目标?我曾经hour_of_day在每周规则中添加一个特定的小时,但我想避免必须根据间隔和开始时间计算每个特定的小时,然后单独添加它们。是否可以链接规则?就像每周规则之上的每小时规则?当我将它们添加为两个单独的规则时,每小时一次的触发独立于每周一次,即在不满足每周规则的日子。