Психическа грешка при разгръщането на Capistrano

Имам скрипт за внедряване на 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'.

Открих подобен проблем тук и приемете, че това предупреждение всъщност е причината за психическия срив. Но не мога да се отърва от него, всъщност 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. Изглежда всичко, от което се нуждая, е да изтрия копирания скрипт на capistrano и да го пренапиша от нулата.


person lifecoder    schedule 22.07.2013    source източник


Отговори (1)


Когато Capistrano влезе - използва неинтерактивна обвивка - не зарежда .bash_profile И така, заредих bash като обвивка по подразбиране в 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*
person lifecoder    schedule 23.07.2013