0

我关注了 railscast http://railscasts.com/episodes/164-cron-in-ruby但我似乎无法让它发挥作用。

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

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

[时间表.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

在我的宝石文件中。丢失了什么?

4

2 回答 2

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 中将没有任何内容。否则它会告诉你是否

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

试试看..

于 2012-04-03T14:30:39.470 回答
0

所以... 几件事情。

  1. 你需要一个 Capfile 和一个 config/deploy.rb 来使用 Capistrano 和 Whenver 部署你的代码。你可以通过运行得到这个capify .......你很可能应该在 capistrano 部署上观看 railscast
  2. 无论何时使用配置如下:

日程安排.rb

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

我真的不认为rake "pages_controller:home它会起作用,除非这是你已经在其他地方创建的东西。我进一步假设您正在缓存此页面,这就是您需要刷新缓存的原因。

最后,您将环境设置为开发环境,这让我认为您没有部署它,而只是想重置缓存的主页......所以只需运行rake cache:clear

于 2012-04-03T15:13:37.363 回答