Utilización de la importación rastrillo (llamando a otros rakefiles)
Pregunta
Aquí está mi archivo rastrillo primaria
subrake = 'subrake'
task :init => [subrake] do
#call subrake.build
end
import subrake
Veo documentación sobre cómo funcionan los pasos anteriores, pero no puedo encontrar la manera de llamar a tareas en el otro archivo subrake. Por cierto, estas tareas pueden tener el mismo nombre que el mío, este es un problema?
Solución
Creo que estoy tarde con mi respuesta, pero no tenía la misma pregunta hace sólo unos momentos. Así que la solución podría ser útil para alguien.
Rakefile.rb
subrake = 'subrake'
task :default => :init
task :init => ["#{subrake}:init"] do
Rake::Task["#{subrake}:build"].invoke
end
require "#{Dir.pwd}/#{subrake}"
subrake.rb
namespace :subrake do
desc "Init"
task :init do
puts 'Init called'
end
desc "Build"
task :build do
puts 'Build called'
end
end
Creo que el código describe a sí misma sólo es bueno, pero yo quiero parar en un momento dado. Cuando usted está llamando requiere , se debe prever un subrake presentar una ruta completa (como en mi ejemplo) o '\ subrake' (si está en un directorio de trabajo )
Otros consejos
Si usted tiene más de un archivo secundario de rake podría hacer algo como
Dir.glob('**/*.rake').each { |r| import r}
task :init => ["subrake:init"]
y se puede tener un archivos sub.rake que se parece de manera
namespace :subrake do
desc "Init"
task :init do
puts 'Init called'
end
end
y otro archivo foo.rake
namespace :foorake do
desc "Init"
task :init do
puts 'Init called'
end
end
y se puede llamar foorake: init de la concha como tal
#rake foorake:init
o añadirlo a que la tarea principal hacer como así
task :init => ["subrake:init", "fforake:init"]