2014-02-05 15 views
10

Here ist ein Tutorial zum Übergeben von Parametern an eine Capistrano 3 Aufgabe.So übergeben Sie Argumente an Capistrano 3 Aufgaben in deploy.rb

$ cap staging "task:invoke[arg]" 

Wie kann ich dies in meinem deploy.rb verwenden:

namespace :task do 
    desc 'Execute the specific cmd task' 
    task :invoke, :command do |task, args| 
    on roles(:app) do 
     execute :cmd, args[:command] 
    end 
    end 
end 

kann mit dem ausgeführt? Folgendes funktioniert nicht.

before :started, "task:invoke[arg]" 

Antwort

4

Nicht sicher before/after, aber mit Capistrano 3 können Sie immer die rake Syntax und Aufgabe aufrufen aus einer anderen Aufgabe:

Rake::Task["mynamespace:mytask"].invoke(arg) 
3

Sie invoke Methode verwenden:

before :started, :second_param do 
    invoke 'task:invoke', 'arg' 
end 

Auch eine Sache, die hilfreich sein könnte, capistrano und Rake, die es erlauben, die Aufgabe nur beim ersten Mal auszuführen, könnte dies allgemein sein Für eine Aufgabe mit Parametern, weil Sie sie mit einem anderen Wert wiederverwenden können. Um dies zu ermöglichen, müssen Sie die Aufgabe erneut aktivieren:

namespace :task do 
    desc 'Execute the specific cmd task' 
    task :invoke, :command do |task, args| 
    on roles(:app) do 
     execute :cmd, args[:command] 
     task.reenable    # <--------- this how to re-enable it 
    end 
    end 
end 
+0

Verwenden von Capistrano v3 auf Ihrem ersten Beispiel gibt "falsche Anzahl von Argumenten (1 für 2+)" zurück. – marcovtwout

+0

Können Sie ein Beispiel zeigen? "Es war die Arbeit auf meinem Rechner" :) –

+0

auf neuesten Capistrano Master, unten deploy.rb: '' ' vor "bereitstellen: aktualisiert" do #COMMAND hier Ende ' '' – marcovtwout

Verwandte Themen