问题标签 [rufus-scheduler]

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 回答
494 浏览

ruby-on-rails - rufus-scheduler gem 不在 Rails 中工作

我正在使用 state_machine gem 和 rufus-scheduler gem。状态机工作正常。然而,Rufus-scheduler 不是。我正在构建这个程序只是为了习惯 rufus gem。:accepted 转换为 :both 10 秒后,它应该转换为 :only_employer。但是,由于某种原因,rufus-scheduler 无法正常工作。转换到 :both 有效,但它不会转换到 :only_employer。我该如何解决?谢谢。

0 投票
1 回答
418 浏览

ruby-on-rails - 无法弄清楚如何使 rufus 调度程序使用 .at 而不是 .in

我有两个模型:计划和任务。Task belongs_to Schedule 和 Schedule has_many 任务。我有一个用于任务的嵌套表单,它使用 javascript 通过按下“添加任务”按钮来动态创建更多任务表单。我正在尝试使用 rufus_scheduler 来使任务具有用户输入的结束日期和结束时间。当任务完成时,它应该简单地向服务器打印“yo yo yo”。

使用以下代码,我成功地在几秒钟内完成了第一个任务:

在上面的代码中,timeframe 是一个整数字段,用户输入给定的秒数,在该秒数之前作业应该发生。

问题是上面的代码使用了一个间隔,我想使用一个确切的日期和时间。因此,我将时间范围更改为字符串,并让用户以这种格式输入日期:'12/18/2013'。这是我尝试过的:

为了清楚起见,timeframe 是一个包含日期的字符串,而 complete_time 是一个包含任务结束时间的时间字段。

此代码不起作用。"yo yo yo" 仍然打印,但它只是立即打印。

我正在使用 postgres 数据库在 webrick 上运行 rails。我正在使用 Ruby on Rails 4 和 Ruby 2。我将不胜感激。谢谢!

更新:

我意识到我的代码中有两个错误。complete_time 被自动转换为不可读的格式。我通过将 complete_time 更改为字符串来解决此问题。此外,我意识到我对 .at 方法的论点不在引号中。我解决了这个问题。但是,我仍然遇到同样的问题。与其等到所说的时间放“哟哟哟”,不如马上放。这是新代码:

scheduler.at 方法像这样进入服务器:

当然,用户输入的时间和日期会不断变化,上面的代码只是我最后一次运行它。

0 投票
3 回答
6557 浏览

ruby-on-rails - 如何让 rufus-scheduler 与部署到 Heroku 的 Rails 应用程序一起工作?

./config/initializers我创建了一个名为的文件task_scheduler.rb,它包含以下代码:

rufus-scheduler开发环境中测试时有效。但是当我将应用程序部署到 Heroku(免费)时它停止工作。

我正在Phusion Passenger 4.0.27用作应用程序服务器。

我的 Gemfile 看起来像这样:

Phusion 乘客所需的Procfile内容包括:

我没有工人在运行。我正在使用一种免费的标准webDyno。

知道为什么rufus-scheduler在部署到 Heroku 时不工作吗?

更新

我知道我可以创建一个客户.rake文件并使用免费Heroku Scheduler add-on来执行任务。但我想知道是否有办法让rufus-scheduler免费的heroku测功机组合工作。

0 投票
2 回答
2058 浏览

ruby-on-rails - rufus 调度程序每次运行两次

也许这是我的任务,也许是我的调度程序,但由于某种原因,我的调度任务运行了两次或将两个版本保存到数据库。这是我的代码:

报告.rb:

和 scheduler.rb:

我错过了一些非常明显的东西吗?这是保存的页面统计信息数据库的输出:

从时间戳可以看出,它每 10 分钟运行两次

编辑:

我刚刚又看了一遍数据……调度器改变了几次时间:

  1. 首先,它连续运行两次作业,每次 10 分钟
  2. 然后,它切换到每 10 分钟一次
  3. 然后,它切换到每 5 分钟一次
  4. 然后,它切换到每 5 分钟两次

编辑2:锁定后的新输出:

我的文件现在看起来像这样:

但是在heroku日志中有一个错误:

0 投票
3 回答
4862 浏览

ruby - Rufus 调度程序:每 x 秒运行一次,第一次运行立即

我正在使用 rufus 调度程序让一些任务经常执行。我希望所有任务在脚本启动时或多或少地立即运行,然后以给定的时间间隔运行。API似乎不支持这,还是我遗漏了什么?

我已将 0.1 秒指定为第一次运行前的延迟,如下所示

如果该:first_in属性设置为 0,调度程序会在第一次运行之前等待整整 10 秒。如果该值设置得太低(我想在执行任务时评估为过去的值),或者如果我使用Time.now,则会引发以下错误:

知道这样做的正确方法是什么吗?

0 投票
1 回答
304 浏览

ruby-on-rails - 如何避免在没有测功机的情况下多次调用 Rufus 调度程序?

我在Heroku中运行一个 rails 应用程序,我使用Rufus Scheduler

我的应用程序使用多个dyno,并且调度程序在每个dyno而不是一个上运行,因此我的计划事件会触发多次(每个触发一次dyno)。

我怎样才能避免这种情况?

0 投票
0 回答
652 浏览

ruby-on-rails - Rufus 调度程序未在生产 puma 中运行

我有一只 puma 在生产中运行。

这是 puma 配置。但是,只有一个实例 Rufus-scheduler 在开发环境中按预期完美运行。

我在 Rails 4.0.2 上运行

这不能运行的任何原因?

0 投票
1 回答
223 浏览

ruby - Ruby 代码在 Rufus 调度程序中抛出异常

我正在 debian linux 上执行一个控制器,它在无限循环中执行功能。除此之外,我正在使用 Rufus Scheduler 来安排一个在特定时间后运行的函数,比如说 1 分钟。一旦函数在 Rufus 中正确执行,我会收到以下错误

0 投票
2 回答
877 浏览

ruby - 优雅地停止 heroku worker 上的 rufus 调度程序

我在一个运行在 heroku worker 上的 rake 任务中运行 rufus-scheduler。由于常规的 heroku dynos 重启,我经常收到 SIGTERM 异常(请参阅heroku dyno docs)。我想实现上述文档中显示的正常关闭并在此过程中关闭 rufus 调度程序:

但是,当我尝试通过此任务将 SIGTERM 发送到进程时,出现错误:

有什么方法可以在 SIGTERM 上正常关闭 rufus 调度程序?我使用 ruby​​ 2.0、rake 10.0.4、rufus-scheduler 3.0.2。

PS不,我不能使用heroku调度程序,因为我需要每分钟运行一次这个任务;-)。

编辑(jmettraux)

测试代码:https ://gist.github.com/jmettraux/a4c00374f58e9f7affa8

Debian GNU/Linux 上的 Ruby 2.0.0-p247、rufus-scheduler 3.0.5 产生:

相同的平台,但使用 Ruby 1.9.3-p392 并且可以正常关闭。

0 投票
2 回答
720 浏览

ruby-on-rails - 如何从模型中调用方法,在 Rufus 调度程序(在控制器中)内部,以便根据用户输入安排时间?导轨 4

所以这里是场景。我正在使用 Rails 4 和 Rufus Scheduler 制作一个在未来特定时间发送 SMS 的应用程序。到目前为止,如果我想通过单击按钮发送 SMS,我就可以使用 SMS。而且我还可以在我在自己的代码中设置的计时器上发送它们,例如下面的那个,它允许将来发送我的消息。基本上,我设置了计时器,当它响起时,它会调用我的方法来发送 SMS 消息。

这一切都很好,但我需要做的最后一件事是制作一个接受用户输入的方法,并将其放在日期/时间/时区所在的位置。在我的 new.html.erb 中,我已经接受了所有这些信息,但我不知道如何从那里获取并将其放入调度程序操作中。

这有效:

这是我已经尝试过的,没有运气。

这是模型。

这是控制器。

结尾

和观点:

我一直在尝试破解这个 3 多个小时,但没有运气。我是 Rails 的初学者,如果这个问题的格式不完美,请提前抱歉。还在学习。当我使用“-”、“+”和“”时,我的方法不断出错。所以我把这些东西放在视图中。这就是为什么它看起来很奇怪。你们有什么感想?