rails ejemplos ruby-on-rails ruby-on-rails-3 cron whenever cron-task

ruby-on-rails - ejemplos - schedule cron rails



El trabajo de Cron en ruby ​​on rails no funciona (2)

Seguí el railscast http://railscasts.com/episodes/164-cron-in-ruby pero parece que no puedo hacerlo funcionar.

  • Tengo schedule.rb en mi config.
  • Quería actualizar mi Database.count todos los días en mi página de inicio.
  • No puedo encontrar deploy.rb en mi carpeta. ¿Dónde está?

Para fines de prueba, lo cambié a cada 2 segundos.

[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

he puesto

gem ''whenever'', :require => false

en mi gemfile ¿Qué se ha perdido?


Entonces ... Junte cosas.

  1. Necesita un Capfile y un config / deploy.rb para implementar su código usando Capistrano y Whenver. capify . esto ejecutando capify . ... Lo más probable es que tengas cuidado con el railscast en el despliegue de Capistrano
  2. Siempre que se use configurado como:

schedule.rb

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

Realmente no creo que rake "pages_controller:home funcione, a menos que esto sea algo que ya hayas creado en otro lugar. Además estoy asumiendo que estás almacenando en caché esta página, y es por eso que necesitas actualizar el caché.

Finalmente, está configurando su entorno para el desarrollo, lo que me hace pensar que no está implementando esto, sino que simplemente desea restablecer la página de inicio en caché ... Así que simplemente ejecute la rake cache:clear


He usado cron job pero lo ejecuto como tarea de rake, por favor, puedes probarlo

every 3.minutes do set :environment, ''development'' rake "daily",:output => {:error => ''error.log'', :standard => ''cron.log''} end

Y mi tarea es como

require ''rubygems'' task :daily => :environment do puts "i am fine" # do your code end

Si la tarea cron se ejecuta correctamente, no habrá nada en cron.log. De lo contrario, le mostrará si

se produce un error y este archivo se generará en el directorio raíz de su aplicación.

intentalo..