2012-04-03 70 views
0

我跟着railscast http://railscasts.com/episodes/164-cron-in-ruby,但我似乎无法使它工作。Cron在红宝石轨道上工作不工作

  • 我在我的配置中有schedule.rb。
  • 我想在我的主页上每天刷新我的Database.count。
  • 我在我的文件夹中找不到deploy.rb。它在哪里?

出于测试目的,我将其更改为每2秒。

[schedule.rb]

every '2 * * * *' do 
    rake "pages_controller:home" 
end 

[pages_controller.rb]

class PagesController < ApplicationController 
def home 
    @title = "Home" 
    @companies = Company.find(:all, :limit => 20) 
    @count = Company.count 

end 

我已经把

gem 'whenever', :require => false 

在我的Gemfile。失踪了什么?

+1

你说你缺少deploy.rb - 你安装并配置了capistrano吗? – 2012-04-03 14:33:48

+0

我没有它。我需要在配置中手动创建一个deploy.rb吗? – 2012-04-03 14:39:35

回答

0

我用cron作业,但我运行它rake任务,请你可以尝试

every 3.minutes do 
    set :environment, 'development' 
    rake "daily",:output => {:error => 'error.log', :standard => 'cron.log'} 
    end 

而我的任务就是像

require 'rubygems' 

    task :daily => :environment do 
    puts "i am fine" 
    # do your code 
    end 

如果cron作业运行得很好,那么会有什么在cron.log.Otherwise它会告诉你,如果

发生任何错误,这个文件将在您的应用程序根目录中生成。

试试吧..

+0

什么文件是你的任务:每日=>:环境在? – 2012-04-03 14:34:06

+0

你的任务是在gemfile中吗? – 2012-04-03 15:00:54

+0

daily.rake是我的任务文件.. – Kashiftufail 2012-04-04 09:23:44

0

所以...几件事情。

  1. 您需要一个Capfile和一个config/deploy.rb来使用Capistrano和Whenver部署您的代码。您可以通过运行capify .得到这个......你应该最有可能看
  2. 每当使用配置像斯特拉努部署railscast:

schedule.rb

every 1.day, :at => '4:30 am' do 
    runner 'Rails.cache.clear' 
end 

我真的不认为rake "pages_controller:home将开始工作,除非这是您在其他地方创建的。我进一步假设你正在缓存这个页面,这就是为什么你需要刷新缓存。

最后,你设置你的环境来发展,这让我觉得你是不是部署此,而是只是想重新缓存的主页......所以,只要运行rake cache:clear

+0

rake cache:在我的终端清除报告错误 – 2012-04-03 15:26:27

+0

in'block in initialize':未定义的局部变量或方法'clear'for#(NameError) \t from /Users/amysukumunu/.rvm/ gems/ruby​​-1.9.2-p290/gems/whatever-0.7.3/lib /never/job_list.rb:38:在'every'中 – 2012-04-03 15:26:48

+0

已更新为使用runner清除缓存 – 2012-04-04 02:49:34