2012-04-03 3 views
0

Я следил за railscast http://railscasts.com/episodes/164-cron-in-ruby, но я не могу заставить его сработать.Cron job in ruby ​​on rails не работает

  • У меня есть 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? –

+0

У меня его нет. Нужно ли вручную создавать config.rob в config? –

ответ

0

Я использовал хрон, но я запустить его в качестве передней задачи, пожалуйста, вы можете попробовать это

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.log.Otherwise это покажет вам, если

всякая ошибка возникает, и этот файл будет создан в корневом каталоге приложения.

попробуйте ..

+0

какой файл является вашей задачей: daily =>: environment in? –

+0

Ваша задача в gemfile правильно? –

+0

daily.rake - мой файл задачи .. – Kashiftufail

0

Итак ... Пара вещей.

  1. Вам нужен файл Capfile и config/deploy.rb для развертывания вашего кода с использованием Capistrano и Whenver. Вы получаете это, запустив capify . ... Вы должны, скорее всего, смотреть railscast на развертывание Капистрано
  2. Всякий раз используя сконфигурированный как:

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: явная ошибка отчета в моем терминале –

+0

в 'block in initialize ': неопределенная локальная переменная или метод' clear' для # (NameError) \t от /Users/amysukumunu/.rvm/ gems/ruby-1.9.2-p290/gems/when-0.7.3/lib/when/job_list.rb: 38: in 'every ' –

+0

Обновлено для использования бегуна для очистки кеша –

 Смежные вопросы

  • Нет связанных вопросов^_^