2012-12-04 13 views
9

Obecnie aktualizuję swoją aplikację z szyn 2.3 do 3.0 i rubin 1.9.3. Po wprowadzeniu wymaganych zmian i próbie dostępu do strony głównej mojej aplikacji pojawia się następujący błąd.Szyny 3 błędy yaml

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' 

Pełne ślad stosu można znaleźć na stronie: http://pastie.org/5478123

linii nr 73 od en.yml zawiera

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

Czy ktoś może mi pomóc w ustaleniu tego. Obecnie moja aplikacja działa na Railsach 2.3.14 i ruby ​​1.8.7

Odpowiedz

15

Ruby 1.9.3 używa Psych jako swojego parsera Yaml, a 1.8.7 używa starszego i przestarzałego Syck. Kwestia, którą widzisz, to known issue in LibYaml, biblioteka, na której zbudowano Psych, i wynika z niejasności, która pojawia się, gdy dwukropki są dozwolone w kontekście przepływu.

Istnieje o tym Ruby bug.

Rozwiązaniem jest zmienić yaml używać kontekst bloku:

order: 
    - :year 
    - :month 
    - :day 

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