When I run deploy with Capistrano lately, I get this error in the procedure:
* executing "find /var/www/<myapp>/releases/20121220195214/public/images\\ /var/www/<myapp>/releases/20121220195214/public/stylesheets\\ /var/www/<myapp>/releases/20121220195214/public/javascripts -exec touch -t -- 201212201952.40 {} ';'; true"
servers: ["50.56.126.187"]
[50.56.126.187] executing command
*** [err :: 50.56.126.187] find:
*** [err :: 50.56.126.187] `/var/www/<myapp>/releases/20121220195214/public/images /var/www/<myapp>/releases/20121220195214/public/stylesheets /var/www/<myapp>/releases/20121220195214/public/javascripts'
*** [err :: 50.56.126.187] : No such file or directory
*** [err :: 50.56.126.187]
command finished in 452ms
Why is it trying to find a path that ends in double backslashes?
It looks like it’s trying to pass multiple paths as a single argument to find. The spaces that delimit the path list are escaped with a backslash and passed into find as one argument. I suspect that each path is supposed to be passed in as an individual argument to find. I’m not familiar with Capistrano, so I’m not able to point out exactly what drives this process and why it is trying to send in the three paths as a single argument instead of three separate arguments.
The double backslashes that you are seeing are an artifact of how Ruby’s String#inspect method works, as noted in this forum post.