Ruby on rails Rails Capistrano部署-修订版:没有这样的文件或目录

Ruby on rails Rails Capistrano部署-修订版:没有这样的文件或目录,ruby-on-rails,ruby-on-rails-3,capistrano,web-deployment,Ruby On Rails,Ruby On Rails 3,Capistrano,Web Deployment,我使用CapistranoGem和本教程将应用程序部署到远程服务器。在cap deploy命令结束之前,一切正常。我收到这个错误: ** [ps123456.dreamhostps.com :: out] sh: myapp.git/releases/20130916201449/REVISION: No such file or directory command finished in 2266ms *** [deploy:update_code] rolling back *

我使用CapistranoGem和本教程将应用程序部署到远程服务器。在
cap deploy
命令结束之前,一切正常。我收到这个错误:

 ** [ps123456.dreamhostps.com :: out] sh: myapp.git/releases/20130916201449/REVISION: No such file or directory
    command finished in 2266ms
*** [deploy:update_code] rolling back
  * executing "rm -rf myapp.git/releases/20130916201449; true"
    servers: ["ps123456.dreamhostps.com"]
    [ps123456.dreamhostps.com] executing command
    command finished in 254ms
failed: "sh -c 'git clone --depth 1 ssh://username@ps123456.dreamhostps.com/~/myapp.git myapp.git/releases/20130916201449 && cd myapp.git/releases/20130916201449 && git checkout -b deploy 497af4d996358f8d1f42dc9658e276ee8d9fa64f && git submodule init && git submodule sync && export GIT_RECURSIVE=$([ ! \"`git --version`\" \\< \"git version 1.6.5\" ] && echo --recursive) && git submodule update --init $GIT_RECURSIVE && rm -Rf myapp.git/releases/20130916201449/.git && (echo 497af4d996358f8d1f42dc9658e276ee8d9fa64f > myapp.git/releases/20130916201449/REVISION)'" on ps123456.dreamhostps.com

出了什么问题?

很难说清楚,但很明显,当您尝试将git修订版推入文件修订版时,您的
releases/#{revision}
目录已丢失

一个可能需要解决的问题是您的
:deploy_to
dir与您要从中克隆的git repo在同一台机器上的目录相同。请尝试以下方法:

在deploy.rb中

set :deploy_to, "/home/#{user}/app/#{application}"
然后确保在第一次运行此选项:

cap deploy:setup
然后,请随意:

cap deploy

奇怪的是,在经历了大量的挠头之后,我的失败是
capdeploy:setup
。我仍然不确定发生了什么,但我已经彻底测试并验证了删除部署目录并在不运行
cap deploy:setup
的情况下重新部署应用程序是否可行


由于某些原因,即使在成功部署后运行
cap deploy:setup
,也会导致权限错误,并导致
cap deploy
无法创建和写入目录。

这是有意义的!不幸的是,这只会导致另一个问题,即
致命:无法创建工作树目录'/home/user/app/MyApp/releases/20130916214938':权限被拒绝
。不过我应该有写权限。这很奇怪,因为你的错误是/home/user/app。。。但应该是/home/username/app/MyApp。看起来您正在将:user设置为“username”,我认为这是正确的。您不应该这样做,但现在可以将:deploy_to to/home/username/app/#{application}设置为一个健全检查。
cap deploy