Capistrano 3带符号链接

时间:2014-01-24 01:09:44

标签: ruby-on-rails ruby capistrano3

我用Capistrano 3尝试部署我的应用程序(Ruby on Rails 4)已经有3天了,但我真的找不到答案。

我在控制台中遇到错误:

ln: creating symbolic link «/home/miguelnieva/webapps/eatsy/releases/20140124005756/config/database.yml»: El fichero ya existe
    cap aborted!
    ln stdout: Nothing written
    ln stderr: Nothing written

“El fichero ya existe”是一句话,意思是:“文件已存在”

这是我的deploy.rb:

set :application, 'eatsy'
set :repo_url, 'https://github.com/conexionweb/eatsy.git'
set :branch, "rails"

set :deploy_to, '/home/miguelnieva/webapps/eatsy/'
set :scm, :git
set :branch, "rails"

set :use_sudo, false

set :rails_env, "production"

set :pty, true

 set :linked_files, %w{ config/database.yml }
#  set :linked_dirs, %w{ bin log tmp/pids tmp/cache tmp/sockets vendor/bundle }

# set :default_env, { path: "/opt/ruby/bin:$PATH" }
set :keep_releases, 1

set :deploy_via, :remote_cache

namespace :deploy do

    desc "Check that we can access everything"
    task :check_write_permissions do
      on roles(:all) do |host|
        if test("[ -w #{fetch(:deploy_to)} ]")
          info "#{fetch(:deploy_to)} is writable on #{host}"
        else
          error "#{fetch(:deploy_to)} is not writable on #{host}"
        end
      end
    end

after :finishing, 'deploy:cleanup'

end

这是完整的日志:

$ cap deploy production --trace

...

** Invoke deploy:symlink:shared (first_time)
** Execute deploy:symlink:shared
** Invoke deploy:symlink:linked_files (first_time)
** Execute deploy:symlink:linked_files
 INFO [804288b4] Running /usr/bin/env mkdir -pv /home/miguelnieva/webapps/eatsy/releases/20140124005756/config on web396.webfaction.com
DEBUG [804288b4] Command: /usr/bin/env mkdir -pv /home/miguelnieva/webapps/eatsy/releases/20140124005756/config
 INFO [9232a3e0] Running /usr/bin/env mkdir -pv /home/miguelnieva/webapps/eatsy/releases/20140124005756/config on 108.168.242.146
DEBUG [9232a3e0] Command: /usr/bin/env mkdir -pv /home/miguelnieva/webapps/eatsy/releases/20140124005756/config
 INFO [9232a3e0] Finished in 0.198 seconds with exit status 0 (successful).
DEBUG [8fd8907c] Running /usr/bin/env [ -L /home/miguelnieva/webapps/eatsy/releases/20140124005756/config/database.yml ] on 108.168.242.146
DEBUG [8fd8907c] Command: [ -L /home/miguelnieva/webapps/eatsy/releases/20140124005756/config/database.yml ]
 INFO [804288b4] Finished in 0.201 seconds with exit status 0 (successful).
DEBUG [9d8736a7] Running /usr/bin/env [ -L /home/miguelnieva/webapps/eatsy/releases/20140124005756/config/database.yml ] on web396.webfaction.com
DEBUG [9d8736a7] Command: [ -L /home/miguelnieva/webapps/eatsy/releases/20140124005756/config/database.yml ]
DEBUG [8fd8907c] Finished in 0.190 seconds with exit status 1 (failed).
DEBUG [22b4e01b] Running /usr/bin/env [ -f /home/miguelnieva/webapps/eatsy/releases/20140124005756/config/database.yml ] on 108.168.242.146
DEBUG [22b4e01b] Command: [ -f /home/miguelnieva/webapps/eatsy/releases/20140124005756/config/database.yml ]
DEBUG [9d8736a7] Finished in 0.206 seconds with exit status 1 (failed).
DEBUG [b46bc068] Running /usr/bin/env [ -f /home/miguelnieva/webapps/eatsy/releases/20140124005756/config/database.yml ] on web396.webfaction.com
DEBUG [b46bc068] Command: [ -f /home/miguelnieva/webapps/eatsy/releases/20140124005756/config/database.yml ]
DEBUG [22b4e01b] Finished in 0.175 seconds with exit status 1 (failed).
 INFO [e75127e8] Running /usr/bin/env ln -s /home/miguelnieva/webapps/eatsy/shared/config/database.yml /home/miguelnieva/webapps/eatsy/releases/20140124005756/config/database.yml on 108.168.242.146
DEBUG [e75127e8] Command: /usr/bin/env ln -s /home/miguelnieva/webapps/eatsy/shared/config/database.yml /home/miguelnieva/webapps/eatsy/releases/20140124005756/config/database.yml
DEBUG [b46bc068] Finished in 0.180 seconds with exit status 1 (failed).
 INFO [1a838606] Running /usr/bin/env ln -s /home/miguelnieva/webapps/eatsy/shared/config/database.yml /home/miguelnieva/webapps/eatsy/releases/20140124005756/config/database.yml on web396.webfaction.com
DEBUG [1a838606] Command: /usr/bin/env ln -s /home/miguelnieva/webapps/eatsy/shared/config/database.yml /home/miguelnieva/webapps/eatsy/releases/20140124005756/config/database.yml
 INFO [e75127e8] Finished in 0.171 seconds with exit status 0 (successful).
DEBUG [1a838606]    ln: creating symbolic link «/home/miguelnieva/webapps/eatsy/releases/20140124005756/config/database.yml»: El fichero ya existe
cap aborted!
ln stdout: Nothing written
ln stderr: Nothing written
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/sshkit-1.3.0/lib/sshkit/command.rb:94:in `exit_status='
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:142:in `block (4 levels) in _execute'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:551:in `call'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:551:in `do_request'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:561:in `channel_request'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:465:in `dispatch_incoming_packets'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:221:in `preprocess'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:205:in `process'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `block in loop'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:269:in `wait'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:164:in `block (2 levels) in _execute'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:514:in `call'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:514:in `do_open_confirmation'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:545:in `channel_open_confirmation'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:465:in `dispatch_incoming_packets'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:221:in `preprocess'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:205:in `process'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `block in loop'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:166:in `block in _execute'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:123:in `tap'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:123:in `_execute'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:66:in `execute'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.1.0/lib/capistrano/tasks/deploy.rake:126:in `block (5 levels) in <top (required)>'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.1.0/lib/capistrano/tasks/deploy.rake:119:in `each'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.1.0/lib/capistrano/tasks/deploy.rake:119:in `block (4 levels) in <top (required)>'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:54:in `instance_exec'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:54:in `run'
/home/miguelnieva/.rvm/gems/ruby-2.0.0-p353/gems/sshkit-1.3.0/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute'
Tasks: TOP => deploy:symlink:linked_files
The deploy has failed with an error: #<SSHKit::Command::Failed: ln stdout: Nothing written
ln stderr: Nothing written
>
** Invoke deploy:failed (first_time)
** Execute deploy:failed

我不确定capistrano是否正在复制文件两次。

谢谢!

1 个答案:

答案 0 :(得分:0)

检查此答案:Capistrano can not create symlinks: file exist

在deploy / production.rb中:

role :app, %w{ubuntu@api01.app.com}
role :web, %w{ubuntu@api01.app.com}
role :db,  %w{ubuntu@api01.app.com}

...需要匹配:

server 'api01.app.com', user: 'ubuntu', roles: %w{web app}, ...