2012-04-03 13 views
0

Ich folgte der Railscast http://railscasts.com/episodes/164-cron-in-ruby, aber ich kann nicht scheinen, es funktioniert.Cron Job in Ruby auf Schienen funktioniert nicht

  • Ich habe schedule.rb in meiner Konfiguration.
  • Ich wollte mein Database.count täglich auf meiner Homepage aktualisieren.
  • Ich kann die deploy.rb in meinem Ordner nicht finden. Wo ist es?

Zu Testzwecken habe ich es alle 2 Sekunden geändert.

[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 

Ich habe

setzen
gem 'whenever', :require => false 

in meinem gemfile. Was ist verschwunden?

+1

laufen Sie sagen, du bist die deploy.rb fehlt - hast du capistrano installiert und konfiguriert? –

+0

Ich habe es nicht. Muss ich manuell eine deploy.rb in Config erstellen? –

Antwort

0

Ich habe Cron-Job verwendet, aber ich laufe es als Rake Aufgabe bitten Sie können es versuchen

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

Und meine Aufgabe ist es wie

require 'rubygems' 

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

Wenn Cron-Job gut läuft, dann wird es nichts in cron.log.Otherwise wird es Ihnen zeigen, wenn

jeder Fehler auftritt und diese Datei wird in Ihrem App-Stammverzeichnis generiert werden.

versuchen Sie es ..

+0

Welche Datei ist Ihre Aufgabe: täglich =>: Umgebung in? –

+0

Ihre Aufgabe ist in Gemfile richtig? –

+0

daily.rake ist meine Task-Datei .. – Kashiftufail

0

Also ... Paar Dinge.

  1. Sie benötigen eine Capfile und eine config/deploy.rb, um Ihren Code mit Capistrano und Whenver zu implementieren. Sie dies erhalten, indem capify . laufen ... Sie sollten höchstwahrscheinlich die Railscast auf Capistrano Einsatz beobachten
  2. Jedes Mal, wenn konfiguriert wird, wie:

schedule.rb

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

Ich glaube wirklich nicht, rake "pages_controller:home wird funktionieren, es sei denn, dies ist etwas, das Sie bereits woanders erstellt haben. Ich gehe weiter davon aus, dass Sie diese Seite zwischenspeichern, und deshalb müssen Sie den Cache aktualisieren.

Schließlich sind Sie Ihre Umgebung für die Entwicklung einstellen, die mich denken, macht Sie das nicht bereitstellen, sondern wollen nur die im Cache gespeicherte Homepage zurücksetzen ... Also nur rake cache:clear

+0

Rake-Cache: Fehler in meinem Terminal löschen –

+0

in 'Block in initialisieren': undefinierte lokale Variable oder Methode 'clear 'für # (NameError) \t von /Users/amysukumunu/.rvm/ Edelsteine ​​/ ruby-1.9.2-p290/Edelsteine ​​/ wann immer-0.7.3/lib/wann immer/job_list.rb: 38: in 'jedem ' –

+0

Aktualisiert, um einen Läufer zu verwenden, um den Cache zu löschen –