Capistrano v3 ist etwas von einem Wrapper um Rake, also müssen Sie erkennen, dass was wirklich passiert ist, dass eine production
Aufgabe zuerst ausgeführt wird, gefolgt von einer deploy
Aufgabe.
Wenn Sie es ein wenig debuggen, werden Sie feststellen, dass deploy.rb
nicht geladen werden, wenn Sie eine Bühne geben Sie nicht auf. Dies liegt daran, dass die Aufgabe der Bühne darin besteht, dass deploy.rb
geladen wird: Mit Blick auf lib/setup.rb
wird für jede Phase eine Aufgabe definiert. Wenn er ausgeführt wird, setzt die Aufgabe der Bühne :stage
, lädt die capistrano-Standardwerte und lädt schließlich Ihre deploy.rb
-Datei.
So ein einfacher Trick wäre Capistrano zu sagen, die Bühne Aufgabe jedes Mal, wenn cap
aufzurufen laufen diese bis zum Ende Ihrer Capfile
durch Zugabe (nicht Ihre deploy.rb
):
Rake::Task[:production].invoke
oder, mit der invoke
Methode von Capistrano DSL:
invoke :production
Diese einige unbeabsichtigten Folgen haben kann, wenn Sie tatsächlich mehrere Stufen verwenden, aber wenn y Verwenden Sie nur die production
Bühne, sollte es gut funktionieren.
Eine andere einfache Lösung könnte ein einfacher Shell-Alias sein, wie alias cap='cap production'
, aber es funktioniert möglicherweise nicht gut, wenn Sie mehrere Projekte mit verschiedenen Stufennamen haben.
ich heute gleiche Frage hinzufügen würde, aber ich dachte, dass ich nicht einige grundlegende, offensichtliche Option finden, leider scheint es nicht so offensichtlich ist, (wirklich seltsam) und es gibt fast keine Dokumentation in Bezug auf v3. – zrl3dx