Je suis nouveau chez Capistrano et j’ai essayé d’utiliser le DSL de Capistrano pour exécuter des commandes Shell sur le serveur ('exécuter', 'exécuter', etc.), mais il semble que cela soit devenu obsolète. Après avoir recherché et recherché un équivalent fonctionnel, je suis toujours perdu.
Code actuel:
desc 'Do something'
task :do_something
execute 'echo sometext'
end
Sortie:
cap aborted!
undefined method `execute' for main:Object
/Users/Justin/Dropbox/xxxx/xxxx/xxxx/Capfile:45:in `block (2 levels) in <top (required)>'
/Users/Justin/.rvm/gems/Ruby-2.0.0-p247/bundler/gems/capistrano-2dc1627838f9/lib/capistrano/application.rb:12:in `run'
/Users/Justin/.rvm/gems/Ruby-2.0.0-p247/bundler/gems/capistrano-2dc1627838f9/bin/cap:3:in `<top (required)>'
/Users/Justin/.rvm/gems/Ruby-2.0.0-p247/bin/cap:23:in `load'
/Users/Justin/.rvm/gems/Ruby-2.0.0-p247/bin/cap:23:in `<main>'
/Users/Justin/.rvm/gems/Ruby-2.0.0-p247/bin/Ruby_noexec_wrapper:14:in `eval'
/Users/Justin/.rvm/gems/Ruby-2.0.0-p247/bin/Ruby_noexec_wrapper:14:in `<main>'
Tasks: TOP => deploy:do_something
Dans Capistrano v3, vous devez spécifier où vous voulez exécuter le code en appelant on
avec une liste de noms d’hôte, par exemple.
task :execute_on_server do
on "[email protected]" do
execute "some_command"
end
end
Si vous avez des rôles configurés, vous pouvez utiliser la méthode roles
comme commodité:
role :mailserver, "[email protected]"
task :check_mail do
on roles(:mailserver) do
execute "some_command"
end
end
Il existe une documentation v3 ici: http://www.capistranorb.com/