web-dev-qa-db-fra.com

Comment puis-je appeler une tâche capistrano d'une autre?

Comment puis-je appeler une tâche capistrano d'une autre?

Par exemple:

task :foo do
  # stuff
end

task :bar do
  # INVOKE :foo
end
43
weicool

Vous pouvez le faire en utilisant l'espace de noms:

namespace :test do
  task :one do
  end
  task :two do
    test.one
    #or just directly call it:
    one
  end
end

Soyez juste prudent avec le nom que vous utilisez pour ne pas écraser une fonction importante.

35
mpapis

Pour l'enregistrement: Dans le Capistrano 3, utilisez invoke(), par exemple.

desc "Task that does something"
task :do_something do
  invoke 'namespace:task'
end

Plus à - https://github.com/capistrano/capistrano#befrever-adiver

98
Ain Tohvri

Généralement, vous le faites en définissant des dépendances:

before :bar, :foo
5
tadman

vous pourriez également utiliser Rake::Task["namespace:task"].invoke, cela marche

2
andi

Si la tâche vit dans un autre espace de noms, vous pouvez utiliser find_and_execute_task au lieu.

1
troelskn