Capistrano deploy failing with :if Expression Syntax failure

Hi everyone,

I’m attempting to setup Capistrano for the first time. I’ve
successfully run

rake remote:exec ACTION=“setup”

However, every time I run rake deploy I get the following error:

[root@www2 ~/src/ideeli/trunk/log]# rake deploy
(in /root/src/ideeli/trunk)
loading configuration
/usr/local/lib/ruby/gems/1.8/gems/capistrano-1.1.0/lib/capistrano/recipes/standard.rb
loading configuration ./config/deploy.rb
loading configuration
#Proc:0x08f74508@/usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-0.2.0/lib/mongrel_cluster/recipes.rb:1

  • executing task deploy
    ** transaction: start
  • executing task update_code
  • querying latest revision…
  • executing “if [[ ! -d
    /usr/local/www/rails_apps/ideeli/releases/20060828223656 ]]; then\n
    /usr/local/bin/svn co -q -r142
    svn://216.12.167.103/ideeli/trunk
    /usr/local/www/rails_apps/ideeli/releases/20060828223656 &&\n
    (test -e /usr/local/www/rails_apps/ideeli/revisions.log || touch
    /usr/local/www/rails_apps/ideeli/revisions.log && chmod 666
    /usr/local/www/rails_apps/ideeli/revisions.log) && echo date +\"%Y-%m-%d %H:%M:%S\" $USER 142 20060828223656 >>
    /usr/local/www/rails_apps/ideeli/revisions.log;\n fi”
    servers: [“216.12.167.103”]
    Password:
    [216.12.167.103] executing command
    ** [out :: 216.12.167.103] if: Expression Syntax.
    command finished
    *** [update_code] transaction: rollback
  • [update_code] rolling back
  • executing “rm -rf
    /usr/local/www/rails_apps/ideeli/releases/20060828223656”
    servers: [“216.12.167.103”]
    [216.12.167.103] executing command
    command finished
    rake aborted!
    command “if [[ ! -d
    /usr/local/www/rails_apps/ideeli/releases/20060828223656 ]]; then\\n
    /usr/local/bin/svn co -q -r142
    svn://216.12.167.103/ideeli/trunk
    /usr/local/www/rails_apps/ideeli/releases/20060828223656 &&\\n
    (test -e /usr/local/www/rails_apps/ideeli/revisions.log || touch
    /usr/local/www/rails_apps/ideeli/revisions.log && chmod 666
    /usr/local/www/rails_apps/ideeli/revisions.log) && echo date +\"%Y-%m-%d %H:%M:%S\" $USER 142 20060828223656 >>
    /usr/local/www/rails_apps/ideeli/revisions.log;\\n fi”
    failed on 216.12.167.103

(See full trace by running task with --trace)

As you can see the error it craps out on is :if, Expression Syntax.
I’m basically following the example in the Capistrano manual so I
haven’t been messing around with anything tricky.

Can anyone shed some light on what’s going on?

Thanks,

Mark

maui wrote:

/usr/local/www/rails_apps/ideeli/releases/20060828223656 ]]; then\n
/usr/local/bin/svn co -q -r142
svn://216.12.167.103/ideeli/trunk
/usr/local/www/rails_apps/ideeli/releases/20060828223656 &&\n
(test -e /usr/local/www/rails_apps/ideeli/revisions.log || touch

The trailing '\n’s look weird, but I don’t have a cap install to hand to
try it out, so it could be that they are there all the time.

Alan

I found the problem. The target box was running csh as the default
shell and the if syntax wasn’t valid for csh. Once I converted the
default shell to bash everything worked fine. Now, off the file a
Capistrano bug.