Capistrano 3 процесс не удался

Я обновляюсь с Capistrano 2 до Capistrano 3, и все, кажется, работает успешно, за исключением того, что я вижу эти 2 сбой, когда он работает:

DEBUG [bbfe01ec] Running /usr/bin/env [ -L /var/www/myapp/releases/20140211033611/public/assets ] on myapp.com
DEBUG [bbfe01ec] Command: [ -L /var/www/myapp/releases/20140211033611/public/assets ]
DEBUG [bbfe01ec] Finished in 0.146 seconds with exit status 1 (failed).
DEBUG [26f99b11] Running /usr/bin/env [ -d /var/www/myapp/releases/20140211033611/public/assets ] on myapp.com
DEBUG [26f99b11] Command: [ -d /var/www/myapp/releases/20140211033611/public/assets ]
DEBUG [26f99b11] Finished in 0.141 seconds with exit status 1 (failed).

Почему они не работают и как я могу их исправить?

1 ответ

Решение

У меня та же проблема, и вот код capistrano, реализующий, когда вы получаете эти ошибки:

desc 'Symlink linked directories'
  task :linked_dirs do
    next unless any? :linked_dirs
    on release_roles :all do
      execute :mkdir, '-pv', linked_dir_parents(release_path)

      fetch(:linked_dirs).each do |dir|
        target = release_path.join(dir)
        source = shared_path.join(dir)
        unless test "[ -L #{target} ]"
          if test "[ -d #{target} ]"
            execute :rm, '-rf', target
          end
          execute :ln, '-s', source, target
        end
      end
    end
  end

Как я понимаю, здесь используется команда ln для создания символических ссылок.

Читая руководство по ln (man ln), мы понимаем, что команда, скорее всего, потерпит неудачу из-за системных ограничений при попытке создать жесткие каталоги ссылок.

-d, -F, --directory
  allow the superuser to attempt to hard link directories (note: will probably fail 
  due to system restrictions, even for the superuser)

"ln -d" не может создать жесткую ссылку, и поэтому выполняется "ln -s" для создания символической ссылки (символическая ссылка вместо жесткой ссылки).

Так что не стоит беспокоиться об этом. Если вы хотите избежать этого, просто измените параметры развертывания следующим образом:

set :format, :pretty
set :log_level, :info
Другие вопросы по тегам