Ist es möglich aus einer Rake-Task eine Liste von Aufgaben in einem Namespace zu erhalten? Eine Art von programmatischem 'Rake -T db'?Ist es möglich, eine Liste aller verfügbaren Rake-Aufgaben in einem Namespace zu erhalten?
18
A
Antwort
16
Ich habe die Antwort herausgefunden:
tasks = Rake.application.tasks
Dies wird eine Reihe von Rake :: Task-Objekte zurück, die untersucht werden können. Weitere Details unter http://rake.rubyforge.org/
1
können Sie den Befehl grep verwenden wie diese
desc 'Test'
task :test do
# You can change db: by any other namespaces
result = %x[rake -T | sed -n '/db:/{/grep/!p;}' | awk '{print$2}']
result.each_line do |t|
puts t # Where t is your task name
end
end
11
Wie Sie schrieben, mit Rake.application.tasks Sie alle Aufgaben bekommen.
Aber innerhalb des Namespace, können Sie nur die Aufgaben des Namensraum (Aufgabe mytest: Taskliste) wählen
Und Sie können die Aufgaben zu einem Namensraum (Task tasklist_mytest) beschränken.
require 'rake'
namespace :mytest do |ns|
task :foo do |t|
puts "You called task #{t}"
end
task :bar do |t|
puts "You called task #{t}"
end
desc 'Get tasks inside actual namespace'
task :tasklist do
puts 'All tasks of "mytest":'
puts ns.tasks #ns is defined as block-argument
end
end
desc 'Get all tasks'
task :tasklist do
puts 'All tasks:'
puts Rake.application.tasks
end
desc 'Get tasks outside the namespace'
task :tasklist_mytest do
puts 'All tasks of "mytest":'
Rake.application.in_namespace(:mytest){|x|
puts x.tasks
}
end
if $0 == __FILE__
Rake.application['tasklist'].invoke() #all tasks
Rake.application['mytest:tasklist'].invoke() #tasks of mytest
Rake.application['tasklist_mytest'].invoke() #tasks of mytest
end
Verwandte Themen
- 1. Gibt es eine Möglichkeit, eine Liste aller verfügbaren Projekte auf Google Code zu erhalten?
- 2. Liste aller verfügbaren .NET-Assemblies
- 3. Liste aller verfügbaren ResourceBundle-Dateien
- 4. Wie kann ich eine Liste aller verfügbaren Druck-/Faxtreiber erhalten?
- 5. Wie bekomme ich eine Liste aller verfügbaren Shell-Befehle?
- 6. Wie bekomme ich eine Liste aller verfügbaren Servlets?
- 7. Liste aller verfügbaren Modellattribute in Thymeleaf
- 8. Erhalten Sie eine Liste der verfügbaren Inhaltsanbieter
- 9. Ist es möglich, eine Liste von Dateien in einem Verzeichnis einer Website zu erhalten? Wie?
- 10. Linux: Liste aller verfügbaren Window Manager
- 11. Liste aller verfügbaren Farben für Powershell?
- 12. Ist es möglich, eine Liste von Warteschlangen auf einem Remote-Broker zu erhalten?
- 13. Gibt es eine Möglichkeit, eine Liste aller Klassen in einer iPhone-Anwendung zu erhalten?
- 14. Ist es möglich, in Piwik eine Inpage-Analyse zu erhalten?
- 15. Ist es möglich, "number_to_currency" in einem Controller zu verwenden?
- 16. ist es möglich, eine Liste in unserer App zu erstellen?
- 17. Werkzeuge, um eine Liste aller Unterprogramme (Methoden, Funktionen) zu erhalten
- 18. Eine Liste aller Klassenlader in einer JVM erhalten
- 19. Ist es möglich, eine ungepufferte Webbrowser-Ausgabe zu erhalten?
- 20. Ist es möglich, eine verknüpfte Liste verschiedener Datentypen zu haben?
- 21. Ist es möglich, eine Liste der Druckernamen in Windows zu erhalten?
- 22. Wildcard, um eine Liste aller Verzeichnisse zu erhalten
- 23. Ist es möglich, eine Klassenzusammenfassung zur Laufzeit zu erhalten?
- 24. Ist es möglich, eine Liste von Bluetooth-Druckern in Android zu erhalten?
- 25. eine Liste aller Modelle von Schienen erhalten
- 26. Ist es möglich, eine Umgebungsvariable in einem Makefile "zu deaktivieren"?
- 27. Ist es möglich, eine Konstruktorfunktion in einem Merkmal zu haben?
- 28. Ist es möglich, eine ISO in einem Andockbehälter zu montieren?
- 29. Abrufen einer Liste aller verfügbaren Namespaces in einer AppDomain
- 30. YAML: Ist es möglich, eine Liste im Stammbereich zu haben?
Soweit ich, gibt es keinen Helfer innerhalb eines Bereichs für die Suche nach Dinge gesehen haben, aber ich denke, dass dies einfach genug sein sollte: Rake.application.tasks.reject {| Aufgabe | task.scope! = [: Ihr,: scope]} – phoet
In meinem Fall (Rails) war es auch notwendig, 'AppName :: Application.load_tasks' zu verwenden, um' Rake.application.tasks' zu füllen. – joshfindit