У меня есть сценарий развертывания 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'.
Я нашел аналогичную проблему здесь и предположить, что это предупреждение действительно является причиной сбоя Psych. Но я не могу избавиться от него, PATH на самом деле выглядит хорошо для меня, и rvm стоит на первом месте, когда я подключаюсь по ssh и проверяю его:
$ echo $PATH
/home/lifecoder/.rvm/gems/ruby-1.9.3-p448/bin:/home/lifecoder/.rvm/gems/ruby-1.9.3-p448@global/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/другие сценарии инициализации.
UPD2: Да, он не загружает bash, но когда я включаю bash, становится еще хуже. В качестве временного решения я отключил capistrano/assets. Кажется, все, что мне нужно, это стереть скопированный сценарий капистрано и переписать его с нуля.