Wie führe ich einen Befehl auf dem Server mit Capistrano aus? - Ruby-on-Rails, Einsatz, SSH, Capistrano

Ich habe eine sehr einfache Aufgabe namens update_feeds:

desc "Update feeds"
task :update_feeds do
run "cd #{release_path}"
run "script/console production"
run "FeedEntry.update_all"
end

Wenn ich versuche, diese Aufgabe auszuführen, erhalte ich folgende Meldung:

[out :: mysite.com] sh: script/console: No such file or directory

Ich dachte mir, weil ich nicht im richtigen Verzeichnis bin, sondern es versuche

run "cd ~/user/mysite.com/current"

Anstatt von

run "cd #{release_path}"

Scheitert auch. Das Ausführen der exakt gleichen Befehle (über ssh) funktioniert einwandfrei. Warum kann man nicht richtig capistrano cd (Verzeichnis wechseln) in das Site-Verzeichnis, um den Befehl auszuführen?

Vielen Dank!


Aktualisieren: Wählte eine Antwort, und vielen Dank an alle, die geantwortet haben. Die beste Antwort könnte tatsächlich die sein ein Serverfehler, obwohl der Kern von beiden (der eine auf Serverfehler und der eine auf Stapelüberlauf) derselbe ist.

Antworten:

1 für die Antwort № 1

Sie möchten Skript / Runner verwenden. Es startet eine Instanz der App, um die Methode auszuführen, die Sie aufrufen möchten. Es ist langsam aber es muss alle Ihre Schienen App laden.

~/user/mysite.com/current/script/runner -e production FeedEntry.update_all 2>&1

Sie können das von der Capistrano-Aufgabe ausführen.


1 für die Antwort № 2

Ich kann mir nicht vorstellen, dass Sie sich aus der Ferne in die Rails-Konsole von capistrano einloggen können. Ich schlage vor, dass Sie Ihre Modellmethode von einer Rake-Aufgabe aufrufen.

Wie führe ich eine Rake-Aufgabe von Capistrano aus?

Was den letzten Teil Ihrer Frage anbelangt, melden Sie sich auf dem Server mit dem gleichen Benutzerkonto wie capistrano an?


Verwandte Fragen
Speisekarte