2010-10-13 9 views
5

Non ho usato cron prima, quindi non posso essere sicuro di averlo fatto bene. Le attività che voglio automatizzare non sembrano essere in esecuzione. Ho fatto questi passi nel terminale:Aiuto con la gemma "Whenever" in Ruby per le attività cron

  1. sudo gem install ogni volta
  2. passare alla directory dell'applicazione
  3. wheneverize. (Questo ha creato il file schedule.rb)
  4. ho aggiunto questo codice di schedule.rb:

    every 10.minutes do 
        runner "User.vote", environment => "development" 
    end 
    
    
    every :hour do 
        runner "Digest.rss", :environment => "development" 
    end 
    
  5. ho aggiunto questo codice di 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. ho fatto questo nel terminale: quando

  7. 'tornato:

    @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. di eseguire questi comandi singolarmente nelle opere del terminale:

    script/runner -e development 'Digest.rss' 
    script/runner -e development 'User.vote' 
    
  9. Ora l'esecuzione di un server locale in modalità di sviluppo, lo script/server, non vedo alcuna prova che il codice sia effettivamente in esecuzione. C'è qualche passo che non ho fatto? Nessuna guida per "Whenever" mostra qualcosa di diverso da ciò che ho fatto.

risposta

11

Sono nuovo di ogni volta così, ma credo che solo in esecuzione

whenever 

solo mostra ciò che il lavoro di cron che viene creata sarà simile. Per scrivere in realtà il lavoro del cron (per renderlo attivo), è necessario eseguire:

whenever -w 

questo modo si ottiene una lista completa di opzioni:

whenever -h 
+1

Nota che ogni volta che -i è un poco più sicuro di ogni volta -w, che sovrascriverà l'intero crontab. Il primo aggiorna solo le voci in crontab relative a quando, lasciando intatte tutte le altre voci. Puoi sempre verificare che il tuo crontab sia stato aggiornato correttamente eseguendo crontab -l. – Ross