2012-04-03 85 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

相關問題