Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run shell commands on server in Capistrano v3?

I'm new to Capistrano and I've tried using Capistrano's DSL to run shell commands on the server ('run', 'execute', etc.), but it appears that it was deprecated. After searching and searching for a functional equivalent, I still am lost.

Current code:

desc 'Do something' task :do_something   execute 'echo sometext' end 

Output:

    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 
like image 495
Jgod Avatar asked Sep 16 '13 23:09

Jgod


1 Answers

In Capistrano v3, you must specify where you want to run the code by calling on with a list of hostnames, e.g.

task :execute_on_server do   on "[email protected]" do     execute "some_command"   end end 

If you have roles set up, you can use the roles method as a convenience:

role :mailserver, "[email protected]"  task :check_mail do   on roles(:mailserver) do     execute "some_command"   end end 

There is some v3 documentation here: http://www.capistranorb.com/

like image 137
lmars Avatar answered Sep 28 '22 11:09

lmars