2016-07-19 6 views
0

Ich verstehe, wie Sie ein Argument an Rake-Task übergeben, aber ich kann nicht herausfinden, wie Sie ein Argument an eine abhängige Aufgabe übergeben.Argument übergeben, um Abhängigkeiten zu umgehen

Ich habe eine Aufgabe, die nur eine Liste von abhängigen Aufgaben ausführt:

task foo [:alpha, :bravo, :charlie, :delta] 

Ich brauche eine Aufgabe :omega genannt hinzuzufügen:

task foo [:omega, :alpha, :bravo, :charlie, :delta] 

Aber ich brauche einen Parameter zu übergeben. Ich möchte den Parameter nicht an: foo übergeben - ich möchte nur den Parameter in die abhängige Aufgabe fest codieren. Ich möchte dies tun (ich weiß, es ist nicht gültig):

task foo [:omega('Some Param'), :alpha, :bravo, :charlie, :delta] 

Wie gebe ich den Parameter?

Antwort

0

Rake werden alle „abhängig“ Aufgaben ausführen, bevor Ihre Aufgabe ausgeführt wird ... so bezweifle ich, Sie in der Lage sein wird, die oben

Können Sie weiter zu erreichen, erklären, was Sie erreichen wollen?

jusy als Beispiel, wenn die Aufgabe von der Kommandozeile ausgeführt wird, können Sie möglicherweise die folgenden

rake foo omegaVar 

In Ihrem Code

def confirmDestruction 
    print "Are you sure you want to do that?\n" 
    answer=gets() 
    if answer == 'y' 
     return true 
    else 
     exit 0 
    end 
end 

task :omega do 
    $conrimedDestruction = confirmDestruction if $conrimedDestruction.nil? 
    if $conrimedDestruction 
    print "${$omegaVar}\n" 
    else 
    print "non destructive functionality\n" 
    end 
end 

task :alpha do 
    if $conrimedDestruction 
    print "${$omegaVar}\n" 
    else 
    print "non destructive functionality\n" 
    end 
end 
task :foo => [:omega, :alpha, :bravo, :charlie, :delta] 
+0

Ich habe eine einfache Aufgabe zu tun, die eine Bestätigung step - Der Benutzer gibt y ein, um zu bestätigen, und wenn er etwas anderes eingibt, wird Rake beendet. Ich benutze diese Aufgabe an mehreren Stellen, aber im Moment ist die Nachricht eine allgemeine 'Zerstörende Aktion bestätigen'. Ich möchte eine Möglichkeit haben, die Nachricht jedes Mal weiterzuleiten, wenn ich sie verwende, so dass sie für den Ort spezifisch ist, an dem sie verwendet wird. – Undistraction

+0

Wenn ich dies implementieren würde, würde ich eine Funktion/Methode anstelle einer Aufgabe für die Bestätigung erstellen. Rufen Sie die Funktion/Methode jedes Mal auf, wenn Sie bestätigen möchten. Wenn Sie eine globale Variable setzen, dann können Sie sie einmal setzen, alle Aufgaben könnten prüfen, ob die Bestätigungsfunktion aufgerufen wurde, andernfalls rufen Sie sie sonst auf. Führen Sie die destruktive Aufgabe aus. Dann haben Sie eine Funktion, die die globale Variable löschen kann. –

+0

Können Sie erklären, was Sie meinen? Wie würde das mit einer Aufgabe funktionieren wie: 'Aufgabe foo [: Alpha,: Bravo,: Charlie,: Delta]' – Undistraction

Verwandte Themen