无法使用everyize在ruby中运行cronjob

时间:2012-05-09 08:00:13

标签: ruby-on-rails cron

我已关注此链接https://github.com/javan/whenever但我尝试在开发模式下运行cronjob它无法正常工作。我想知道以下几行:

every 3.hours do
  runner "MyModel.some_process"       
  rake "my:rake:task"                 
  command "/usr/bin/my_great_command"
end

什么是MyModel.some_process

如果我想运行ruby文件,我就这样写了

every 1.minute do
  runner "cronjob.rb",:environment => "development"
end

...这是正确的方法还是我必须指定cronjob.rb文件的路径,如:

runner "app/controllers/cronjob.rb"

在哪里可以看到rake和命令的输出?

1 个答案:

答案 0 :(得分:2)

在此处查看有关跑步者的更多信息http://guides.rubyonrails.org/command_line.html#rails-runner

根据它,它在应用程序的上下文中运行Ruby代码。或者说你可以为模型执行一些方法(每当文档试图显示时)。这在Rails-2中会略有不同。此外,如果您看到默认job_types的随时文档,例如对于job_type runner,它会执行以下操作 -

"cd :path && script/rails runner -e :environment ':task' :output"

因此,当您在runner "MyModel.some_process"中执行schedule.rb时,它将转到应用程序路径并执行script/rails runner -e <development specified by you> MyModel.some_process,简而言之,它会执行MyModel.some_process。希望这有帮助!