I have defined a custom Capistrano task that's supposed to run locally (on my development machine):
desc "Push code to Dreamhost"
task :push do
run "git push dreamhost"
end
however when I try to run cap push
it executes it on the remote machine, ie.
* executing `push'
* executing "git push dreamhost"
servers: ["ec2-999-99-999-999.compute-1.amazonaws.com"]
how do I get it to execute locally instead?
You can also use:
Or use
run_locally
to run natively with Capistrano, and still get proper logging and all that good stuffI suggest using :
or
That's just plain Ruby !
For the commenter that mentioned run_locally doesn't show output, you have to dump the output to a variable and then print it to see it. Like this:
The downside is you won't see any output until the command has finished. Not a big deal for commands that don't run long but something that runs for several minutes will cause the deploy to appear like it is hung until it finishes. There is an open pull request for Capistrano that adds real time command output to run_locally: https://github.com/capistrano/capistrano/pull/285