2011-01-26 90 views
1

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

回答

7

如果你不想直接与cron来处理,看看whenever。它为编写cron作业提供了一个很好的语法:

every :hour do 
    runner "MyModel.do_something" 
end 
+0

哦,这看起来完全像我想做的那样!谢谢。 – Kreeki 2011-01-26 10:37:06

3

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

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

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

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

例如,调度命令与cron,类型crontab -e跑每一天的每一个小时,加入这一行:

0 3 * * * /command/to/run 

有它运行每隔一小时,让你可以把它检查一个数据库,看它是否应该做的事情:

0 * * * * /command/to/run