Ruby / Rails - 每当宝石 - 循环cron任务 [英] Ruby/Rails - Whenever gem - Loop cron tasks

查看:191
本文介绍了Ruby / Rails - 每当宝石 - 循环cron任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过我的管理页面来控制我的cron作业。

基本上我的数据库中有我的cronjobs,并且我想创建我的crontab即时。

I would like to control my cron jobs through my administration page.
Basically I have my cronjobs in my database, and I would like to create my crontab "on the fly".

下面是一个例子:

Here's an example:

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

每当不输出循环内的任何任务,只输出静态任务。

But Whenever doesn't output any of the tasks inside the loop, only the "static" one.

0 0 * * * whenever --update-crontab

我怎样才能让每当'理解'我的循环?

How can I make Whenever 'understand' my loop?

推荐答案

You probably need to move your eval statement higher up, for example:

您可能需要将您的eval语句更高一些。
every#{cron.run_interval} do
#{cron.cmd}
end
EVAL

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

假设您的cron.cmd与command类似ls -a'。

Assuming that your cron.cmd is something like 'command "ls -a"'.

这篇关于Ruby / Rails - 每当宝石 - 循环cron任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆