2010-10-13 6 views
5

Ich habe Cron nicht zuvor verwendet, also kann ich nicht sicher sein, dass ich das richtig gemacht habe. Die Aufgaben, die ich automatisieren möchte, scheinen nicht ausgeführt zu werden. Ich habe diese Schritte im Terminal:Hilfe mit dem Juwel "Immer wenn" in Ruby für Cron-Aufgaben

  1. sudo gem install, wenn
  2. Änderung des Anwendungsverzeichnis
  3. wheneverize. (Dies erstellt die Datei schedule.rb)
  4. ich diesen Code hinzugefügt schedule.rb:

    every 10.minutes do 
        runner "User.vote", environment => "development" 
    end 
    
    
    every :hour do 
        runner "Digest.rss", :environment => "development" 
    end 
    
  5. ich diesen Code hinzugefügt deploy.rb:

    after "deploy:symlink", "deploy:update_crontab" 
    
    
    namespace :deploy do 
        desc "Update the crontab file" 
        task :update_crontab, :roles => :db do 
        run "cd #{current_path} && whenever --update-crontab #{application}" 
        end 
    end 
    
  6. ich dies tat im Terminal: wann immer

  7. Es zurückgegeben:

    @hourly cd /Users/RedApple/S && script/runner -e development 'Digest.rss' 
    
    
    0,10,20,30,40,50 * * * * cd /Users/RedApple/S && script/runner -e development 'User.vote' 
    
  8. diese Befehle einzeln in den Anschlussarbeiten ausführen:

    script/runner -e development 'Digest.rss' 
    script/runner -e development 'User.vote' 
    
  9. nun einen lokalen Server im Entwicklungsmodus, Skript/Server ausgeführt wird, ich sehe keine Anzeichen dafür, dass der Code tatsächlich ausgeführt wird. Gibt es einen Schritt, den ich nicht gemacht habe? Keine Anleitungen für "Immer" zeigen etwas anderes als das, was ich getan habe.

Antwort

11

Ich bin neu, wenn auch, aber ich denke, dass gerade läuft

whenever 

nur zeigt Ihnen, was die cron-Job, der erstellt wird aussehen wird. Um den Cron-Job, um tatsächlich zu schreiben (um es aktiv), müssen Sie ausführen:

whenever -w 

Diese finden Sie eine vollständige Liste der Optionen erhalten:

whenever -h 
+1

Beachten Sie, dass, wenn -i ein wenig sicherer als wenn -w, was deine gesamte crontab überschreibt. Ersteres aktualisiert nur die Einträge in crontab, die sich auf wann beziehen, wobei alle anderen Einträge unverändert bleiben. Sie können immer überprüfen, ob Ihre crontab korrekt aktualisiert wurde, indem Sie crontab -l ausführen. – Ross