2013-07-22 91 views
5

Tôi có một triển khai kịch bản Capistrano có công việc một thời gian, nhưng bây giờ nó ném lỗi như vậy trên triển khai:lỗi Psych trên triển khai 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' 
... 

Nó cũng ném một vài cảnh báo trong thời gian triển khai:

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

Tôi đã tìm thấy sự cố tương tự here và giả định cảnh báo này thực sự là nguyên nhân gây ra sự cố Tâm lý. Nhưng tôi không thể thoát khỏi nó, PATH thực sự có vẻ tốt đối với tôi, và RVM ở nơi đầu tiên khi tôi kết nối qua ssh và kiểm tra xem nó:

$ 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 

Tôi không quá thành thạo trong * nix vì vậy tôi có thể bỏ lỡ một cái gì đó - nhưng không thể tìm thấy những gì chính xác.

Tôi biết nó có thể sửa chữa được bằng cách thay đổi công cụ phân tích YAML, hoặc bằng cách xóa tập tin YAML ở đâu đó để Tâm không khởi động, nhưng tôi muốn khắc phục sự cố này đúng cách.

UPD1: Tôi đã thêm móc với 'sử dụng rvm' vào tập lệnh Capistrano và trả lại cho tôi 'RVM không phải là chức năng'. Dường như nó không tải bashrc/init script khác.

UPD2: Có, nó không tải bash, nhưng khi tôi bật bash nó trở nên tồi tệ hơn. Là giải pháp tạm thời, tôi đã vô hiệu hóa capistrano/asset. Dường như tất cả những gì tôi cần là xóa tập lệnh viết hoa văn bản sao chép và ghi lại từ đầu.

Trả lời

1

Khi Capistrano đăng nhập vào - nó sử dụng vỏ không tương tác - nó không load .bash_profile Vì vậy, tôi đã tải một bash như một vỏ mặc định trong deployment.rb:

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

và sau đó di chuyển tập lệnh tải RVM từ .bash_profile sang .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*