2016-02-04 2 views
0
выпуска

Мой deploy.rb файл выглядит следующим образомCapistrano, используя неверный путь

SSHKit.config.command_map[:rake] = "bundle exec rake" 

    lock '3.2.1' 

    set :application, 'foobar' 
    set :scm, :git 
    set :repo_url, '[email protected]:xxxx/xxxx.git' 

    set :deploy_via, "copy" 
    set :ssh_options, { forward_agent: true } 

    set :assets_roles, [:web] 
    set :whenever_roles, [:cron] 

    set :format, :pretty 

    set :pty, true 

    set :linked_files, fetch(:linked_files, []).push('config/database.yml') 

    set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/assets', 'public/system', 'public/uploads') 

    set :keep_releases, 5 

    set :rvm_type, :user 
    set :rvm_ruby_version, '[email protected]' 

    set :nvm_type, :user 
    set :nvm_node, 'v0.12.4' 
    set :nvm_map_bins, %w{node npm} 
    set :nvm_roles, [:web] 

    set :bundle_path, nil 
    set :bundle_binstubs, nil 
    set :bundle_flags, '--system' 

    namespace :deploy do 

    after :restart, :clear_cache do 
     on roles(:app) do 
     within current_path do 
      with rails_env: fetch(:rails_env) do 
      execute :rake, 'db:schema:load' 
      end 
     end 
     end 
    end 

    end 

Но когда я пытаюсь сделать cap production deploy я получаю следующее сообщение об ошибке

DEBUG [56b32b4c] Running /usr/bin/env if test ! -d /var/www/omega/current; then echo "Directory does not exist '/var/www/omega/current'" 1>&2; false; fi as [email protected] 
    DEBUG [56b32b4c] Command: if test ! -d /var/www/xxxx/current; then echo "Directory does not exist '/var/www/xxxx/current'" 1>&2; false; fi 
    DEBUG [56b32b4c] Directory does not exist '/var/www/xxxx/current' 
    cap aborted! 
    SSHKit::Runner::ExecuteError: Exception while executing as [email protected]: if test ! -d /var/www/xxxx/current; then echo "Directory does not exist '/var/www/xxxx/current'" 1>&2; false; fi exit status: 1 

Я не понимаю, что происходит не так с и я потратил довольно много времени на отладку ошибки, но пока не добился успеха.

+0

Вы задаетесь вопросом: «Капистрано использует неправильный путь выпуска», но неясно, какой путь вы ожидаете от него, и почему, что случилось с/var/www/omega/current? – mfazekas

ответ

1

Причиной для этого конкретного сценария была, current символического был мертв. Значит, какой каталог он указывал, что-то было удалено.

Так почему команды Capistrnao вызывают ошибку Directory does not exists.

0

По умолчанию Capistrano развозит ваше приложение на /var/www/[application_name], как вы установили в :application. При развертывании он видит, существует ли /var/www/omega. Это не так, и, следовательно, он терпит неудачу.

Вы можете изменить местоположение, к которому он развертывает с:

set :deploy_to, '/my/deploy/dir' 

 Смежные вопросы

  • Нет связанных вопросов^_^