Работа Cron в ruby ​​on rails не работает

Я следил за рельсовой трансляцией 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

в моем гемфайле. Что пропало?


person shoujo_sm    schedule 03.04.2012    source источник
comment
Вы говорите, что вам не хватает файла deploy.rb — вы установили и настроили capistrano?   -  person Jesse Wolgamott    schedule 03.04.2012
comment
У меня его нет. Нужно ли вручную создавать файл deploy.rb в конфигурации?   -  person shoujo_sm    schedule 03.04.2012


Ответы (2)


Я использовал задание 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 ничего не будет. В противном случае он покажет вам, если

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

попытайся..

person Kashiftufail    schedule 03.04.2012
comment
в каком файле находится ваша задача :daily =› :environment? - person shoujo_sm; 03.04.2012

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

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

расписание.rb

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

Я действительно не думаю, что rake "pages_controller:home сработает, если это не то, что вы уже создали в другом месте. Я также предполагаю, что вы кешируете эту страницу, и поэтому вам нужно обновить кеш.

Наконец, вы настраиваете свою среду для разработки, что заставляет меня думать, что вы не развертываете это, а вместо этого просто хотите сбросить кешированную домашнюю страницу... Так что просто запустите rake cache:clear

person Jesse Wolgamott    schedule 03.04.2012
comment
в block in initialize': undefined local variable or method clear' для #‹Whenever::JobList:0x000001012c2c78› (NameError) из /Users/amysukumunu/.rvm/gems/ruby-1.9.2-p290/gems/whenever-0.7.3/lib/whenever/job_list.rb :38:в `каждом' - person shoujo_sm; 03.04.2012