1

我正在尝试使用 Capistrano 部署我的 Rails 应用程序。

我的 deploy.rb 文件如下所示:

require "bundler/capistrano"

server "xx.xx.xxx.xxx", :web, :db, :primary => true

set :application,       "myApp"
set :user,              "ubuntu"
set :deploy_to,         "/home/#{user}/apps/#{application}"
#set :deploy_via,       :remote_cache
set :migrate_target,    :current
set :keep_releases,     3

set :scm,               "git"
set :repository,        "git@github.com:name/#{application}.git"
set :branch,            "master"
set :use_sudo,          false

default_run_options[:pty] = true

# default_run_options[:shell] = '/bin/bash'

ssh_options[:forward_agent] = true
ssh_options[:keys] = ["#{ENV['HOME']}/.ec2/keypair.pem"]

现在每当我尝试做

cap deploy:cold

我收到如下错误:

https://gist.github.com/c54933142b900f9f93b9

任何帮助,将不胜感激 。

4

1 回答 1

2

我看到的唯一我不认识的是set :migrate_target :current——这可能是默认的或暗示的,所以也许没什么好担心的,但你的要点的根本错误是

 ** [out :: xx.xx.xxx.xxx] rm:
 ** [out :: xx.xx.xxx.xxx] cannot remove `/home/ubuntu/apps/myApp/current'
 ** [out :: xx.xx.xxx.xxx] : Is a directory

current应该是符号链接,而不是目录,所以很难知道它是如何成为目录的。

我将登录到服务器,更改为/home/ubuntu/apps/myApp/then rm -rf current。从那里您可以手动创建预期的符号链接(当前将链接到名称为日期/时间的目录),或者从本地计算机运行返回cap deploy:create_symlink然后尝试常规部署。

我认为可以公平地说,capistrano 初始化并不是它的强项——一旦你把事情搞定,它往往会变得非常可笑,在那之前,更多的是令人发指的迟钝。

于 2012-11-08T23:55:10.557 回答