2013-07-22 4 views
5

У меня есть сценарий развертывания Capistrano, которые имеют работу в течение некоторого времени, но теперь это бросить такую ​​ошибку на развертывание:Psych ошибка развертывания Capistrano

/Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:203:in `parse': (<unknown>): control characters are not allowed at line 1 column 1 (Psych::SyntaxError) 
    from /Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:203:in `parse_stream' 
    from /Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:151:in `parse' 
    from /Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:127:in `load' 
... 

Он также бросает несколько предупреждений во время развертывания:

** [out :: test.domain] Warning! PATH is not properly set up, '/home/lifecoder/.rvm/gems/ruby-1.9.3-p448/bin' is not at first place, 
** [out :: test.domain] 
** [out :: test.domain] usually this is caused by shell initialization files - check them for 'PATH=...' entries, 
** [out :: test.domain] 
** [out :: test.domain] to fix run: 'rvm use ruby-1.9.3-p448'. 

Я нашел аналогичную проблему here и предположим, что это предупреждение на самом деле является причиной аварии в психиатрической больнице. Но я не могу избавиться от него, путь на самом деле выглядит хорошо для меня, и РВМ является в первую очередь при подключении через SSH и проверить его:

$ echo $PATH 
/home/lifecoder/.rvm/gems/ruby-1.9.3-p448/bin:/home/lifecoder/.rvm/gems/[email protected]/bin:/home/lifecoder/.rvm/rubies/ruby-1.9.3-p448/bin:/home/lifecoder/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games 

Я не так владеть * nix, поэтому я, вероятно, что-то пропустил, но не могу найти, что именно.

Я знаю, что он, вероятно, исправляется с помощью изменения кода анализатора YAML или удалением файла YAML где-то, поэтому Psych не запускается, но я бы предпочел исправить эту проблему правильно.

UPD1: У меня есть крючок с «использованием rvm» в скрипте Capistrano, и он возвращает меня «RVM не является функцией». Кажется, он не загружает скрипты bashrc/other init.

UPD2: Да, он не загружает bash, но когда я включаю bash, он становится еще хуже. В качестве временного решения я отключил capistrano/активы. Кажется, все, что мне нужно, - это стереть скопированный скрипт capistrano и переписать его с нуля.

ответ

1

Когда Capistrano входит в систему - он использует не интерактивную оболочку - это не нагружает .bash_profile Итак, я загрузить Баш в качестве оболочки по умолчанию в deployment.rb:

default_run_options[:shell] = '/bin/bash' 

а затем переместите сценарий загрузки RVM из .bash_profile в .bashrc

#.bash_profile 
source ~/.bashrc 



#.bashrc 
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* 
Смежные вопросы