2011-01-06 44 views
0

我想通过我的管理页面控制我的cron作业。
基本上我有我的数据库中的cronjobs,我想创建我的crontab“飞”。Ruby/Rails - 每当宝石时 - 循环计时任务

下面是一个例子:

require "#{RAILS_ROOT}/config/environment.rb" 
Cron.all.each do |cron| 
    if cron.at.blank? 

    every eval(cron.run_interval) do 
     cron.cmd 
    end 

    else 

    every eval(cron.run_interval), :at => cron.time do 
     cron.cmd 
    end 

    end 
end 

every 1.day do 
    command "whenever --update-crontab" 
end 

每当不输出任何的循环内的任务,只有“静态”之一。

0 0 * * * whenever --update-crontab 

我怎样才能让每当 '明白' 我的循环?

回答

1

你可能需要将你的eval语句上涨,例如:

 
eval <<-EVAL 
    every #{cron.run_interval} do 
    #{cron.cmd} 
    end 
EVAL 

假设你cron.cmd是像“命令的‘ls -a’”。

+0

非常感谢,它的工作!我尝试了<< - EOS,但我不知道<< - EVAL。 :) – Frexuz 2011-01-06 17:59:24

+1

只要符合字符串的开头和结尾,您就可以使用任何您喜欢的名称:<< - RANDOM_NAME ... RANDOM_NAME。关键是在它之前有eval。 – 2011-01-06 18:14:34

+0

这很有趣:D – Frexuz 2011-01-08 11:44:06