tasks rails generators generate example commands ruby-on-rails rake task

ruby on rails - rails - Combinando muchas tareas de rake en una tarea de rake



rake task rails (3)

Puedes hacerlo con dependencias en una tarea sin cuerpo.

desc ''This rebuilds development db'' task :rebuild_dev => ["db:drop", "db:create", "db:migrate", "db:load"]

En lugar de ejecutar cada tarea de rake individualmente como esto:

rake db:drop rake db:create rake db:migrate rake db:load

Quiero ejecutar una tarea de rake que hace todo por.

Esto es lo que tengo para mi rakefile:

desc ''This rebuilds development db'' namespace :rebuild_dev do Rake::Task["db:drop"].execute Rake::Task["db:create"].execute Rake::Task["db:migrate"].execute Rake::Task["db:load"].execute end

Lo anterior no funciona cuando lo ejecuto.


Quieres invoke no execute . Un pequeño extracto de mi propio código que muestra cómo pasar variables:

namespace :clients do task :create, [:client] => ["clients:creation:checks"] do |t, args| Rake::Task["clients:creation:git"].invoke(client, password) Rake::Task["server:virtualhost:create"].invoke(client) Rake::Task["server:virtualhost:enable"].invoke(client) Rake::Task["server:reload"].invoke Rake::Task["db:roles:create"].invoke(client, password) Rake::Task["db:create"].invoke(client, client) Rake::Task["db:migrate"].invoke(client) end end

Alternativamente, puede hacer que la tarea dependa de otra tarea como lo he hecho anteriormente con :create dependiendo de los clients:creation:checks .

Solo para aclarar, un espacio de nombres es para agrupar tareas, por lo que debe definir las tareas dentro del espacio de nombres como lo he hecho anteriormente. No puedes simplemente llamar tareas desde un espacio de nombres.

Por lo que su código de arriba debe ser:

desc ''This rebuilds development db'' task :rebuild_dev do Rake::Task["db:drop"].invoke Rake::Task["db:create"].invoke Rake::Task["db:migrate"].invoke Rake::Task["db:load"].invoke end


namespace :rebuild_dev do desc ''This rebuilds development db'' task :clean_slate => :environment do Rake::Task["db:drop"].invoke Rake::Task["db:create"].invoke Rake::Task["db:migrate"].invoke Rake::Task["db:load"].invoke end end