¿Es posible desde una tarea de rastreo obtener una lista de tareas en un espacio de nombres? Una especie de 'rake-db' programático?¿Es posible obtener una lista de todas las tareas de rake disponibles en un espacio de nombres?
18
A
Respuesta
16
que he encontrado la respuesta:
tasks = Rake.application.tasks
Esto devolverá una matriz de Rake :: objetos de tareas que pueden ser examinadas. Más detalles en http://rake.rubyforge.org/
1
Puede utilizar el comando grep como esto
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
Como usted escribió, con Rake.application.tasks a obtener todas las tareas.
Pero dentro del espacio de nombres, puede seleccionar sólo las tareas del espacio de nombres (tarea mytest: lista de tareas)
Y puede restringir las tareas a un espacio de nombres (tasklist_mytest tarea).
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
Cuestiones relacionadas
- 1. ¿Es posible registrar consultas sql en tareas de rake?
- 2. es posible obtener la lista de espacios de nombres definidos
- 3. ¿Es posible obtener todas las subclases de una clase?
- 4. Rake Las tareas de RSpec no aparecen
- 5. ¿Es posible crear un espacio de nombres en jQuery?
- 6. Desea obtener la lista de todas las interfaces disponibles en el sistema
- 7. Obtener todas las posibles monedas disponibles
- 8. ¿Cómo obtengo el espacio de nombres actual en Rake?
- 9. Obtener lista de todas las aplicaciones instaladas
- 10. ¿Cómo puedo obtener todas las clases dentro de un espacio de nombres?
- 11. ¿Es posible revertir alias un espacio de nombres C#?
- 12. ¿Hay un "error de método" para las tareas de rake?
- 13. ¿Es posible obtener una lista de palabras clave en Python?
- 14. ¿Cómo obtener una lista de todas las fuentes actualmente disponibles para Matplotlib?
- 15. obtener una lista de enumeraciones disponibles
- 16. Eliminando todas las tareas en cola de un ThreadPoolExecutor
- 17. tarea predeterminada de espacio de nombres en Rake
- 18. Obtener una lista de todas las etiquetas únicas en mongodb
- 19. Obtener una lista de tonos disponibles en Android
- 20. Obtener una lista de todas las sesiones activas en ASP.NET
- 21. ¿Qué es un espacio de nombres?
- 22. Android listar todas las imágenes disponibles
- 23. Windows: ¿cómo obtener una lista de todas las ventanas visibles?
- 24. Documentación de las tareas Ant disponibles para Android?
- 25. ¿Es posible agregar un espacio de nombres C++ a todos los símbolos de una biblioteca C?
- 26. ¿Es posible generar alguna o todas las variables disponibles en un archivo .htaccess?
- 27. Rake tareas en otros archivos
- 28. En PHP, ¿hay alguna manera de obtener todas las clases declaradas en un espacio de nombre específico?
- 29. cómo aplicar una solución de aspecto Postsharp amplia (todas las clases en el espacio de nombres)
- 30. ¿Comando Redis para obtener todas las claves disponibles?
Por lo que yo he visto, no hay ayuda para encontrar cosas dentro de un ámbito, pero creo que esto debería ser bastante fácil: Rake.application.tasks.reject {| tarea | task.scope! = [: su,: alcance]} – phoet
En mi caso (Rails), también fue necesario ejecutar 'AppName :: Application.load_tasks' para rellenar' Rake.application.tasks' – joshfindit