2012-04-04 5 views
1

Ich folge den Railscast wann immer von Java-Tutorial, aber ich scheint nicht in der Lage, es passieren zu lassen. Gibt es ein MUSS, capistrano zu installieren, um cron job zu haben? Es liegt daran, dass ich die deploy.rb nicht habe. Ich listet die Schritte im Detail auf. Gab es irgendwelche Schritte, die ich verpasst hatte, damit mein Cron nicht funktionierte? Ich bekomme immer einen Bericht, dass ich eine neue E-Mail bekommen habe, aber ich habe keine E-Mail-Operation gesendet.Ruby-on-Rails Wann immer von Javan Arbeitsschritt

Schritt 1:

wheneverize . 

====> schedule.rb in Config-Ordner

Schritt 2: [Scheduler.rb]

every '1 * * * *' do 
    runner 'Company.count' 
end 

Schritt 3: [Was ist "speichern"?]

whenever --update-crontab store 

Schritt 4: [config/deploy.rb] < - Ich habe keine Deploy-Dateien, also erstelle ich es selbst.

after "deploy:symlink", "deploy:update_crontab" 

namespace :deploy do 
    desc "Update the crontab file" 
    task :update_crontab, :roles => :db do 
    run "cd #{release_path} && whenever --update-crontab #{application}" 
    end 
end 

Schritt 5:

whenever --update-crontab store 

crontab -l 

Was habe ich verpasst? Warum hat es nicht funktioniert? Bitte erleuchte mich Schritt für Schritt, denn ich bin Neuling in ROR .. danke.

Antwort

2

Die Whenever docs haben ein Beispiel für Wenn mit Capistrano bereitstellen. Fügen Sie einfach Folgendes an die Spitze Ihrer Capistrano Deploy-Konfiguration.

set :whenever_command, "bundle exec whenever" # set this first if using bundler 
require "whenever/capistrano" 

Dann Wenn wird in cron als Teil des deploy installieren.


UPDATE

, dass testen Wenn erfolgreich cron, auf die Zielmaschine ssh als die Capistrano Benutzer für die Zielmaschine und crontab -l laufen bereitstellen aktualisiert wurde. Sie sollten eine ähnliche Ausgabe sehen:

crontab -l 

# Begin Whenever generated tasks for: app_name 
0 0 * * * /bin/bash -l -c 'cd /opt/path/app_name/releases/20120321133343 && RAILS_ENV=production rake group:task --silent' 

0 3 * * 6 /bin/bash -l -c '/opt/path/app_name/shared/bin/script' 

# End Whenever generated tasks for: app_name 
+0

in der Datei deploy.rb? und Bundle installieren wird es tun? –

+0

Ja, die in deploy.rb. Wann immer Sie verwenden werden, wann immer bündeln, um cron auf dem Bereitstellungsziel zu aktualisieren – mguymon

+0

wissen Sie eine Möglichkeit, die ich testen kann, ob es wirklich funktioniert? –