2012-12-04 26 views
9

Tôi hiện đang nâng cấp ứng dụng của mình từ đường ray 2.3 lên 3.0 và ruby ​​1.9.3. Sau khi thực hiện các thay đổi cần thiết và cố gắng truy cập vào trang chủ của ứng dụng của tôi, tôi nhận được lỗi sau.Rails 3 yaml errors

Psych::SyntaxError ((/apps/myapp/config/locales/en.yml): did not find expected node  content while parsing a flow node at line 73 column 14): 
/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:203:in `parse' 
/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:203:in `parse_stream' 
/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:151:in `parse' 
/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:127:in `load' 
/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:297:in `block in load_file' 
/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:297:in `open' 
/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:297:in `load_file' 

Các ngăn xếp đầy đủ dấu vết có thể tìm thấy tại địa chỉ: http://pastie.org/5478123

Dòng số 73 của en.yml chứa

order: [:year, :month, :day] 

Ai đó có thể giúp tôi trong việc sửa chữa này. Hiện tại myapp đang chạy trên Rails 2.3.14 và ruby ​​1.8.7

Trả lời

15

Ruby 1.9.3 sử dụng Psych làm trình phân tích cú pháp Yaml của nó và 1.8.7 sử dụng Syck cũ hơn và lỗi thời. Vấn đề bạn đang xem là một known issue in LibYaml, thư viện mà Psych được xây dựng trên và do một số sự mơ hồ phát sinh khi dấu hai chấm được phép trong ngữ cảnh luồng.

Có một số Ruby bug về việc này.

Giải pháp là thay đổi YAML bạn để sử dụng bối cảnh khối:

order: 
    - :year 
    - :month 
    - :day 

Rails có changed the template that generated this Yaml to avoid this bug.