Cron работа в ruby ​​на рельсах не работает - PullRequest
0 голосов
/ 03 апреля 2012

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

  • У меня в моем конфиге 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

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

Ответы [ 2 ]

0 голосов
/ 03 апреля 2012

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

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

schedule.rb

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

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

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

0 голосов
/ 03 апреля 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...