Gegeben etwas wie:
namespace :my_tasks do
task :foo do
do_something
end
task :bar do
do_something_else
end
task :all => [:foo, :bar]
end
Wie mache ich :all
die Standardaufgabe, damit das Ausführen rake my_tasks
sie aufruft (anstatt aufrufen zu müssen rake my_tasks:all
)?
Antworten:
Platzieren Sie es wie folgt außerhalb des Namespace:
Auch ... wenn Ihre Aufgaben Argumente erfordern, dann:
Beachten Sie, wie Sie im zweiten Beispiel die Aufgabe mit demselben Namen wie den Namespace aufrufen können, dh 'my_tasks'.
quelle
rake all
. In diesem Fall habe ich andere Namespaces. Ich möchte also die Aufgabemy_tasks:all
alsrake my_tasks
, nicht als aufrufen könnenrake all
.Nicht sehr intuitiv, aber Sie können einen Namespace und eine Aufgabe haben, die denselben Namen haben und die Ihnen effektiv das geben, was Sie wollen. Zum Beispiel
Jetzt können Sie Befehle ausführen wie:
und
quelle
task :my_task => ['my_task:foo', 'my_task:bar']
Ich empfehle Ihnen, dies zu verwenden, wenn Sie viele Aufgaben im Namespace haben.
Und dann können Sie alle Aufgaben im Namespace ausführen, indem Sie:
Damit müssen Sie sich keine Sorgen mehr machen, um Ihre: all-Aufgabe zu ändern, wenn Sie diesem Namespace neue Aufgaben hinzufügen.
quelle
Ich benutze dieses Rakefile für Gurken:
Wenn ich dann nur tippe:
Es wird die Standardaufgabe ausgeführt, die sowohl schnelle als auch langsame Tests ausführt.
Ich lernte diese aus Cheezy Blog .
quelle
Ich lese die Frage von obvio171 so, dass er 1) nach einer systematischen Methode fragt , um eine bestimmte Aufgabe in einem Namespace aufzurufen, indem er den Namespace als Aufgabe aufruft.
Ich bin häufig auf das gleiche Bedürfnis gestoßen. Ich mag es, Aufgaben logisch in Namespaces zu gruppieren. Oft ähnelt diese Gruppierung einer Hierarchie. Daher ist der Wunsch, die Gruppe anzurufen, für mich sehr sinnvoll.
Hier ist meine Einstellung:
1) ... oder fragte vor Jahren. Trotzdem eine noch interessante Frage.
quelle
Fügen Sie die folgende Aufgabe außerhalb des Namespace hinzu:
Beachten Sie, dass Sie eine Aufgabe mit demselben Namen wie der Namespace haben können.
Und hier ein größeres Beispiel, das zeigt, wie Sie Aufgaben verwenden können, die denselben Namen wie der Namespace haben, auch wenn Sie Namespaces verschachteln:
Kopieren Sie es einfach und probieren Sie es aus.
quelle
Basierend auf Rockys Lösung Standardaufgabe für den Namespace in Rake
Und die Antwort dieses Dexters Gibt es eine Möglichkeit, die aktuelle Rechenaufgabe zu kennen?
quelle
Die Kombination der Antworten von Szymon Lipiński und Shyam Habarakada ist meiner Meinung nach die idiomatischste und konsequenteste Antwort:
Ermöglicht dies,
rake my_tasks
während Sie das umständliche Aufrufen der Unteraufgaben vermeiden.quelle