Comment invoquer une tâche Capistrano d'une autre?Comment appeler une tâche Capistrano d'une autre?
Par exemple:
task :foo do
# stuff
end
task :bar do
# INVOKE :foo
end
Comment invoquer une tâche Capistrano d'une autre?Comment appeler une tâche Capistrano d'une autre?
Par exemple:
task :foo do
# stuff
end
task :bar do
# INVOKE :foo
end
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
juste être prudent avec le nom vous utilisez pour ne pas écraser une fonction importante.
En général, vous faites cela en définissant les dépendances:
before :bar, :foo
Pour mémoire: dans le Capistrano 3, utiliser invoke()
, par ex.
desc "Task that does something"
task :do_something do
invoke 'namespace:task'
end
Plus sur https://github.com/capistrano/capistrano#before--after
juste une note: 'invoke' doit être directement à l'intérieur de la' task', pas de 'on',' within' ou d'autres blocs. sinon ça ne marchera pas. –
Comment réutiliser une tâche dans le bloc d'une autre tâche? – kaizenCoder
@aspiringCodeArtisan, l'un des cas d'utilisation est la création d'une tâche générale pour une série de petits. –
Si la tâche réside dans un autre espace de noms, vous pouvez utiliser find_and_execute_task
à la place.
vous pouvez également utiliser Rake::Task["namespace:task"].invoke
, cela fonctionne
Alors pourquoi cela ne fonctionne pas? 'tâche: d,: rôles => [: app] do déployer end' –
Remarque: vous ne devez pas utiliser l'espace de noms' test' car il ombrage une méthode Capistrano existante portant ce nom. Vous obtiendrez un argument ArgumentError. –
ouais désolé pour cela, ce n'était qu'un exemple, je suppose que vous allez choisir un espace de noms plus significatif. – mpapis