ошибка capistrano: /current: нет такого файла или каталога

Я пытаюсь развернуть с помощью capistrano, но когда я выполняю cap deploy:update, папка /current не создается, вот ошибка, есть идеи?

executing "cd /home/adamtodd/apps/homebase/current && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile --trace"
servers: ["xx.xxx.xx.xxx"]
[xx.xxx.xx.xxx] executing command
 ** [out :: xx.xxx.xx.xxx] bash: line 0: cd: /home/adamtodd/apps/homebase/current: No such file or directory

person railsy    schedule 06.06.2012    source источник


Ответы (3)


У меня была та же проблема, когда я использовал решение Бена Кертиса для предварительной компиляции активов (assets:переопределение задачи предварительной компиляции) при первом развертывании (deploy:cold мне не помог)

Простой обходной путь здесь

namespace :deploy do
  namespace :assets do
    task :precompile, :roles => :web, :except => { :no_release => true } do
      begin
        from = source.next_revision(current_revision) # <-- Fail here at first-time deploy because of current/REVISION absence
      rescue
        err_no = true
      end
      if err_no || capture("cd #{latest_release} && #{source.local.log(from)} vendor/assets/ app/assets/ | wc -l").to_i > 0
        run %Q{cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile}
      else
        logger.info "Skipping asset pre-compilation because there were no asset changes"
      end
   end
  end
end
person Olegykz    schedule 15.11.2012

cap deploy:update обычно будет работать только для приложений, которые уже были развернуты один раз, чего, как я предполагаю, не произошло в вашем случае, поскольку у вас нет каталога current.

Попробуйте вместо этого сделать cap deploy:cold.

person Bart Jedrocha    schedule 13.06.2012
comment
У меня такая же проблема, и deploy:cold мне ее не решил. Похоже, здесь есть открытая проблема: github.com/capistrano/capistrano/issues/224 - person Paul A Jungwirth; 22.10.2012

Похоже, вы переопределили задачу deploy:assets:precompile, потому что в исходном коде Capistrano видно, что он пытается перейти в releases/12345, а не current:

https://github.com/capistrano/capistrano/blob/master/lib/capistrano/recipes/deploy/assets.rb#L31-43

Поэтому я бы проверил ваш deploy.rb и удалил переопределенную задачу.

(Я переопределил задачу таким же образом, даже добавив --trace, как вы, но какая бы проблема я ни пытался решить, это больше не проблема, и стандартная задача отлично работает для меня. Если Я должен был предположить, я бы сказал, что наша пользовательская задача была хаком, чтобы ввести RAILS_GROUPS=assets в командную строку, но Capistrano теперь обрабатывает это автоматически, как вы можете видеть, если вы проверите связанный исходный код.)

person Paul A Jungwirth    schedule 22.10.2012