Capistrano & Bash: ignore command exit status

I'm using Capistrano run a remote task. My task looks like this:

task :my_task do
  run "my_command"
end

My problem is that if my_command has an exit status != 0, then Capistrano considers it failed and exits. How can I make capistrano keep going when exit when the exit status is not 0? I've changed my_command to my_command;echo and it works but it feels like a hack.


The simplest way is to just append true to the end of your command.

  task :my_task do
    run "my_command"
  end

Becomes

  task :my_task do
    run "my_command; true"
  end

For Capistrano 3, you can (as suggested here) use the following:

execute "some_command.sh", raise_on_non_zero_exit: false

The +grep+ command exits non-zero based on what it finds. In the use case where you care about the output but don't mind if it's empty, you'll discard the exit state silently:

run %Q{bash -c 'grep #{escaped_grep_command_args} ; true' }

Normally, I think the first solution is just fine -- I'd make it document itself tho:

cmd = "my_command with_args escaped_correctly"
run %Q{bash -c '#{cmd} || echo "Failed: [#{cmd}] -- ignoring."'}