每<time a =“”day =“”i =“”set =“”> </time>自动执行脚本

时间:2011-01-26 10:13:05

标签: ruby-on-rails ruby

我想在凌晨3点每天在两​​个数据库之间运行同步ruby脚本(如果可能的话,在rails中执行)。将这些时间存储在数据库中会很好,因为如果同步失败我想将其设置为在一小时内再次尝试(并且在数据库中我可以轻松地将其更改为每天早上5点如果我我想,甚至其他管理员管理我的应用程序)。我想在我的Rails应用程序中的一个操作中使用该脚本,因此我可以在管理中创建一个页面,只需单击脚本将运行的链接(不必要,它可以在一个单独的Ruby文件中,该操作将最终调用,但将它作为专用控制器中的动作会更好,因为我将拥有许多类似这样的脚本,我只想在一个地方拥有类似的东西)。这有什么可能没有东西 - 我不知道 - 关于cron的任何事情吗?

2 个答案:

答案 0 :(得分:7)

如果您不想直接与cron打交道,请查看whenever。它为编写cron作业提供了一个很好的语法:

every :hour do
  runner "MyModel.do_something"
end

答案 1 :(得分:3)

您可以使用任务计划程序来执行此操作。

在Windows上,标准调度程序称为Task Scheduler

在Linux上,标准调度程序称为cron

两者都很简单易用。如果您正在编写Ruby代码,则可以安排任务。

例如,要使用cron计划每天每小时运行的命令,请键入crontab -e,然后添加以下行:

0 3 * * * /command/to/run

让它每小时运行一次,这样你就可以检查数据库,看它是否应该做一些事情:

0 * * * * /command/to/run