2010-10-13 18 views
5

Nie używałem wcześniej crona, więc nie mogę być pewien, że zrobiłem to dobrze. Zadania, które chcę zautomatyzować, wydają się nie działać. Zrobiłem kroki w terminalu:Pomoc z klejnotem "Ilekroć" w Ruby dla zadań cron

  1. sudo gem install ilekroć
  2. zmiana katalogu aplikacji
  3. wheneverize. (Ten stworzył schedule.rb plik)
  4. dodałem ten kod do schedule.rb:

    every 10.minutes do 
        runner "User.vote", environment => "development" 
    end 
    
    
    every :hour do 
        runner "Digest.rss", :environment => "development" 
    end 
    
  5. dodałem ten kod do 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. Zrobiłem to w terminalu: gdy

  7. powrócił:

    @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. Running tych poleceń indywidualnie w pracach przyłączeniowych:

    script/runner -e development 'Digest.rss' 
    script/runner -e development 'User.vote' 
    
  9. Teraz uruchomiony lokalny serwer w trybie rozwoju, scenariusz/serwer, nie widzę żadnych dowodów, że kod jest właściwie prowadzony. Czy jest jakiś krok, którego nie zrobiłem? Brak przewodników dla "Kiedykolwiek" pokazują cokolwiek innego niż to, co zrobiłem.

Odpowiedz

11

Jestem nowy ilekroć jak dobrze, ale myślę, że po prostu działa

whenever 

tylko pokazuje, co zadanie cron, który jest tworzony będzie wyglądać. Aby właściwie napisać zadanie cron (aby ją uaktywnić), trzeba wykonać:

whenever -w 

To będzie Ci pełną listę opcji:

whenever -h 
+1

Zauważ, że gdy -i to trochę bezpieczniejsze niż kiedykolwiek -w, co spowoduje nadpisanie całego pliku crontab. Ten pierwszy aktualizuje tylko wpisy w crontabie związane z każdym, pozostawiając nietknięte inne wpisy. Zawsze możesz sprawdzić, czy Twój crontab został poprawnie zaktualizowany, uruchamiając crontab -l. – Ross