2013-07-22 15 views
5

Ho uno script di distribuzione Capistrano che hanno il lavoro per qualche tempo, ma ora butto tale errore sulla distribuzione:errore Psych sulla distribuzione 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' 
... 

Getta anche diversi avvertimenti durante la distribuzione:

** [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'. 

Ho trovato un problema simile here e suppongo che questo avviso sia effettivamente la causa di Psych crash. Ma io non riesco a sbarazzarsi di esso, il percorso in realtà sembra buono per me, e rvm è in primo luogo quando mi collego via ssh e controllare:

$ 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 

io non sono così esperto in * nix quindi probabilmente mi manca qualcosa - ma non riesco a trovare cosa esattamente.

So che è probabilmente risolvibile con il cambio del parser del parser YAML, o eliminando un file YAML da qualche parte in modo che Psych non si avvii, ma preferirei risolvere questo problema nel modo giusto.

UPD1: Ho aggiunto un hook con 'use rvm' nello script Capistrano e mi restituisce 'RVM non è una funzione'. Sembra che non carichi bashrc/altri script di init.

UPD2: Sì, non carica bash, ma quando abilito bash diventa ancora peggiore. Come soluzione temporanea ho disabilitato capistrano/assets. Sembra che tutto ciò di cui ho bisogno sia cancellare lo script capistrano incollato dalla copia e riscriverlo da zero.

risposta

1

Quando Capistrano registra in - che utilizza shell non interattiva - non carica .bash_profile Così, ho caricare un bash come shell di default nel deployment.rb:

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

e quindi spostare lo script di caricamento RVM da .bash_profile a .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*