Ich bin neu in Capistrano und habe versucht, mit Capistranos DSL Shell-Befehle auf dem Server auszuführen ('Ausführen', 'Ausführen' usw.), aber es scheint, dass es veraltet ist. Nachdem ich nach einem funktionalen Äquivalent gesucht und gesucht habe, bin ich immer noch verloren.
Aktueller Code:
desc 'Do something'
task :do_something
execute 'echo sometext'
end
Ausgabe:
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
ruby
capistrano3
Jgod
quelle
quelle
Antworten:
In Capistrano v3 müssen Sie angeben, wo Sie den Code ausführen möchten, indem Sie
on
mit einer Liste von Hostnamen aufrufen , ztask :execute_on_server do on "[email protected]" do execute "some_command" end end
Wenn Sie Rollen eingerichtet haben, können Sie die
roles
Methode als Annehmlichkeit verwenden:role :mailserver, "[email protected]" task :check_mail do on roles(:mailserver) do execute "some_command" end end
Hier finden Sie einige v3-Dokumentationen: http://www.capistranorb.com/
quelle
execute
Methode basiert auf der Implementierung insshkit
. Weitere Informationen finden Sie derzeitexecute
hier: Die Dokumentation zu github.com/leehambley/sshkit Capistrano 3 ist noch unvollständig.run_locally { ... }
eher als verwendeton ... { ... }
. Dadurch gelangen Sie in den SSHKit-Kontext, ohne eine Verbindung zu einer Remote-Box herzustellen.