【问题标题】:Rails Capistrano Deploy - REVISION: No such file or directoryRails Capistrano 部署 - 修订:没有这样的文件或目录
【发布时间】:2013-09-16 20:23:12
【问题描述】:

我正在使用 Capistrano gem 和本教程将我的应用程序部署到我的远程服务器。在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

这是我的deploy.rb

require 'bundler/capistrano'
set :user, 'username'
set :domain, 'ps123456.dreamhostps.com'
set :applicationdir, "myapp.git"

default_run_options[:pty] = true
set :scm, 'git'
set :repository,  "ssh://username@ps123456.dreamhostps.com/~/myapp.git"
set :git_enable_submodules, 1 # if you have vendored rails
set :branch, 'master'
set :git_shallow_clone, 1
set :scm_verbose, true

# roles (servers)
role :web, domain
role :app, domain
role :db,  domain, :primary => true

# deploy config
set :deploy_to, applicationdir
set :deploy_via, :export

# additional settings
default_run_options[:pty] = true  # Forgo errors when deploying from windows

# Passenger
namespace :deploy do
  task :start do ; end
  task :stop do ; end
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
  end
end

出了什么问题?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 capistrano web-deployment


    【解决方案1】:

    很难准确地说,但很明显,当您尝试将 git 修订版推送到文件 REVISION 时,您的 releases/#{revision} 目录已丢失。

    一个可能应该得到解决的问题是您的:deploy_to 目录与您从中克隆的 git 存储库在同一台机器上的目录相同。试试这个:

    在你的 deploy.rb 中

    set :deploy_to, "/home/#{user}/app/#{application}"
    

    然后确保第一次运行:

    cap deploy:setup
    

    然后随意:

    cap deploy
    

    【讨论】:

    • 这很有道理!不幸的是,它只是引起了另一个问题,说fatal: could not create work tree dir '/home/user/app/MyApp/releases/20130916214938'.: Permission denied。不过,我应该有写权限。
    • 这很奇怪,因为您的错误显示 /home/user/app... 但它应该显示 /home/username/app/MyApp。看起来您正在将 :user 设置为“用户名”,我认为这是正确的。您不应该这样做,但现在您可以将 :deploy_to 设置为 /home/username/app/#{application} 作为健全性检查。
    【解决方案2】:

    经过多次挠头,奇怪的是,cap deploy:setup 是我的失败。我仍然不确定发生了什么,但我已经彻底测试并验证了删除部署目录并重新部署应用程序而不运行cap deploy:setup 将有效。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-23
      • 1970-01-01
      • 2013-11-12
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      相关资源
      最近更新 更多