Назад | Перейти на главную страницу

Ошибки среды Capistrano Shell

Я пытаюсь заставить capistrano работать с rvm и пассажиром автономно. В какой-то момент у меня это работало, а затем capistrano внезапно начал жаловаться на отсутствие команды bundle. Когда я удаляю require 'bundler/capistrano', он больше не жалуется на отсутствие пакета (и больше не пытается объединить), но не выполняет следующие действия:

...
* 2013-07-25 14:29:16 executing `deploy:restart'
* executing "if [[ -f /home/staging/capistrano/shared/tmp/pids/passenger.80.pid ]];\\\n      then\\\n        cd /home/staging/capistrano/current && rvmsudo passenger stop -p 80;\\\n      fi"
  servers: ["ccdev.dyndns.org"]
  [ccdev.dyndns.org] executing command
** [out :: ccdev.dyndns.org] sh: 1:
** [out :: ccdev.dyndns.org] [[: not found
** [out :: ccdev.dyndns.org]
  command finished in 13ms
* executing "cd /home/staging/capistrano/current && rvmsudo passenger start -e staging -p 80 -d"
  servers: ["ccdev.dyndns.org"]
  [ccdev.dyndns.org] executing command
** [out :: ccdev.dyndns.org] sh: 1:
** [out :: ccdev.dyndns.org] rvmsudo: not found
** [out :: ccdev.dyndns.org]
  command finished in 13ms
failed: "env rvmsudo_secure_path=1 sh -c 'cd /home/staging/capistrano/current && rvmsudo passenger start -e staging -p 80 -d'" on ccdev.dyndns.org

Кажется очевидным, что в среде оболочки моего пользователя развертывания отсутствует некоторая переменная пути, но только при вызове из capistrano. Все рассматриваемые команды работают вручную. Я не уверен, с чего начать. В env rvmsudo_secure_path=1 является результатом default_run_options[:env] = {'rvmsudo_secure_path' => 1} в верхней части staging.rb, что предотвращает отображение ошибки rvm и зависание процесса развертывания. Он присутствовал раньше, когда работала развёртка.

bundler/capistrano настройки по умолчанию не всегда лучший выбор, поэтому это рекомендуется в rvm-capistrano чтобы вернуть эти настройки к стандартным рубиновым путям (называется system в комплекте - но к самой системе отношения не имеет)

Я веду пример приложения https://github.com/mpapis/ad/blob/master/config/deploy.rb минимальный экстракт для вас будет:

require "rvm/capistrano"
require "bundler/capistrano"

set :bundle_dir, ''
set :bundle_flags, '--system --quiet'
set :bundle_without, [:development]