rake rakefile

rake - Cargue archivos rastrillo y ejecute tareas desde otros archivos.



rakefile (3)

Actualmente estoy tratando de dividir mis archivos de rastrillo para organizarlos mejor. Para esto, he agregado una carpeta de rake a mi directorio de assets , que contiene un archivo de rake para cada grupo de tareas.

Como vengo de PHP, solo tengo un conocimiento muy básico de Ruby / Rake y no puedo ejecutar la acción predeterminada de mis espacios de nombres después de cargar el archivo.

El comentado fuera Rake :: Task ... -string dentro de la app:init lanza un error en el CL a mí:

rake aborted! uninitialized constant TASK

Aquí está el espacio de nombres / clase (si esta es la palabra correcta).

task :default => [ ''app:init'' ] namespace :app do rake_dir = "#{Dir.pwd}/assets/rake/" rake_files = FileList.new( "#{rake_dir}*" ) desc "Loads rake modules (Default action)" task :init do puts "/t Importing rake files for processing" puts "/t loading..." rake_files.each() { |rake| puts "/t #{rake}" require rake # @link rubular.com name = rake.split( rake_dir ).last.gsub( /.rb/z/, '''' ) puts "/t #{name}" #Rake :: Task[ "#{name}:default" ].invoke } end end

Gracias por adelantado.

Edición: al menos, puedo asegurarme de que el archivo se cargue, ya que el llano puts "file loaded" al comienzo de esos archivos se hace eco. El problema parece ser que la acción :default para el espacio de nombres en el archivo rastrillo cargado no se está cargando.


Puede poner sus tareas en rakelib/ folder, que rake carga de forma predeterminada o agregar una carpeta específica en su Rakefile través de:

Rake.add_rakelib ''lib/tasks''


Si su objetivo es cargar tareas de rake desde un archivo externo, puede hacerlo de la siguiente manera. Primero, digamos que tiene una tarea de rake en un archivo llamado <project>/lib/tasks/hello.rake que se ve así:

desc "Say hello" task :hello do puts "Hello World!" end

Luego puede crear un Rakefile simple en su directorio <project> para cargarlo así:

Dir.glob(''lib/tasks/*.rake'').each { |r| load r} desc "Say goodbye" task :goodbye do puts "See you later!" end

Por supuesto, esto cargará todos los archivos que terminen con la extensión de rake . Simplemente puedes cargar hello.rake así:

load ''./lib/tasks/hello.rake'' desc "Say goodbye" task :goodbye do puts "See you later!" end

Para ver todas las tareas que se han cargado utiliza rake -T . Tenga en cuenta que he usado lib/tasks ya que ese es el enfoque estándar adoptado por las aplicaciones de Rails. Podría usar assets o lo que prefiera, aunque yo prefiero lib/tasks incluso en proyectos que no sean de Rails. También tiendo a separar mis archivos de tareas en función de su espacio de nombres.


Siempre se puede usar Rake.add_rakelib ''tasks'' Rake.add_rakelib, como dijo @splattael. Una cosa que debes saber, los archivos en el directorio ''tareas'' deben tener una extensión de ''.rake'' en lugar de ''.rb'', de lo contrario, rake no lo cargará por ti.

Archivo de muestra:

Después de hacer todo lo anterior, use rake -T para verificar su trabajo para ver si rake ha cargado sus tareas con éxito.