· Tips

Passer des arguments à une tâche rake

L'écriture d'une tâche rake est monnaie courante pour les développeurs Ruby on Rails

L’écriture d’une tâche rake est monnaie courante pour les développeurs Ruby on Rails, mais on a tous cherché à un moment donné comment passer des arguments à sa tâche rake pour la rendre plus générique. C’est d’autant plus un problème que la syntaxe n’est pas vraiment facile à mémoriser et il faut aussi se rappeler comment faire les appels à ces tâches rake avec arguments. Je vous mets donc ici différentes tâches utilisant des arguments.

  • une tâche rake basique utilisant des arguments
namespace :demo do
  task :your_task, [:arg1, :arg2] do |t, args|
    puts "Arg1 is: #{args[:arg1]}"
    puts "Arg2 is: #{args[:arg2]}"
  end
end
  • une tâche rake avec des arguments par défaut
namespace :demo do
  task :your_task_with_default, [:arg1, :arg2] do |t, args|
    args.with_defaults(:arg1 => "default1", :arg2 => "default2")
    puts "Arg1 is: #{args[:arg1]}"
    puts "Arg2 is: #{args[:arg2]}"
  end
end

Maintenant que vous savez écrire votre tâche rake on peut l’appeler de différent façon:

  • passer des arguments à une tâche rake en console
> rake demo:your_task[1,2]
Arg1 is: 1
Arg2 is: 2

> rake "demo:your_task[1, 2]"
Arg1 is: 1
Arg2 is: 2

> rake demo:your_task_with_default
Arg1 is: default1
Arg2 is: default2

> rake demo:your_task_with_default[val1,val2]
Arg1 is: val1
Arg2 is: val2
  • passer des arguments à une tâche rake depuis une autre tâche rake
task :main_task do
  Rake::Task['demo:your_task'].invoke('val1', 'val2')
end

Emballé, c’est pesé !

Contact me

Have a project in mind?