Les doigts carrés

Blog et astuces d'un développeur freelance full-stack, Ruby, Rails et frameworks Javascript

Passer des arguments à une tache rake

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é !

Loic Ginoux

Développeur freelance full-stack avec 9 ans d'expérience, spécialisé sur les applications web, e-commerce, Ruby on Rails et frameworks Javascript tels que React ou Angular.

Recevez mes astuces directement dans votre inbox

* champs obligatoire