为什么Capistrano在带有doublebackslashes的路径上执行`find`?

时间:2012-12-20 20:09:49

标签: capistrano

当我最近与Capistrano一起运行deploy时,我在程序中遇到了这个错误:

  * 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

为什么要尝试找到以双反斜杠结尾的路径?

1 个答案:

答案 0 :(得分:0)

看起来它正在尝试将多个路径作为单个参数进行查找。分隔路径列表的空格使用反斜杠进行转义,并作为一个参数传递给find。我怀疑每条路径都应该作为一个单独的参数传递给find。我不熟悉Capistrano,所以我无法确切地指出驱动这个过程的原因以及为什么它试图将三条路径作为单个参数而不是三个单独的参数发送。

您看到的双反斜杠是Ruby的String#inspect方法工作原理的工件,如forum post中所述。