2011-01-01 8 views
5

Ich versuche, Capistrano zu verwenden, um in zwei verschiedenen Rollen zu implementieren, Bundler für beide verwenden jedoch Bundler Befehl und Flags werden unterschiedlich sein. Ist es möglich, für eine Rolle spezifische Variablen festzulegen? Entweder so etwas wie:Kann Capistrano Variablen basierend auf einer Rolle festlegen?

set :bundle_flags, "--deployment --quiet", :role => "web" 

oder:

role :web do 
    set :bundler_cmd, "--deployment --quiet" 
end 

keine dieser beiden Optionen funktionieren, natürlich. Gibt es einen Weg, dies zu erreichen, oder so ähnlich?

Antwort

1

Es gibt keine Möglichkeit, benutzerdefinierte Variablenwerte pro Rolle zu verwenden.

Sie können stattdessen die mehrstufige Erweiterung von capistrano-ext verwenden, um verschiedene Stufen für Ihre zwei verschiedenen Rollen zu haben.

Wenn verschiedene Stadien keinen Sinn für die Bereitstellung machen, könnten Sie Ihr eigenes Bündel schreiben: Aufgabe installieren und im Kommentar unter verschiedenen Befehle basierend auf Rollen

run "bundle --deployment --quiet", :roles => :web 
run "bundle --deployment", :roles => :app 

Wie bereits erwähnt laufen, ist dieser Ansatz jedoch , werden Fehler ausgelöst, wenn die Rolle keinen Server definiert hat. Es wird auch jeden Befehl seriell ausführen. Um diese beiden Probleme zu umgehen, verwenden Sie den parallelen Helper.

parallel do |session| 
    session.when 'in?(:web)', "bundle --deployment --quiet" 
    session.when 'in?(:app)', "bundle --deployment" 
end 
+0

Mehrstufig funktioniert nicht, da ich es bereits für verschiedene Bereitstellungsstufen verwende. Das Ausführen von Befehlen in einer solchen Reihenfolge führt sie auf einer Rolle und dann auf der anderen, was ein Problem sein kann oder auch nicht. Ich glaube, es wird auch einen Fehler verursachen, wenn Sie jemals keine Server haben, die einer Rolle entsprechen. – silvamerica

+0

Sie haben Recht mit dem Laufansatz. Ich fügte ein Addendum über die Verwendung des parallelen Helfers hinzu, um beide Probleme zu umgehen. –

Verwandte Themen