2012-12-04 7 views
9

Attualmente sto aggiornando la mia applicazione da bails 2.3 a 3.0 e ruby ​​1.9.3. Dopo aver apportato le modifiche richieste e aver provato ad accedere alla pagina iniziale della mia app, sto riscontrando il seguente errore.Rails 3 errori 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' 

La traccia di stack completo è disponibile all'indirizzo: http://pastie.org/5478123

Linea n ° 73 del en.yml contiene

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

Qualcuno mi può aiutare a fissare questo. Attualmente myapp è in esecuzione su Rails 2.3.14 e ruby ​​1.8.7

risposta

15

Ruby 1.9.3 utilizza Psych come parser Yaml e 1.8.7 utilizza Syck più vecchio e obsoleto. Il problema che stai vedendo è un known issue in LibYaml, la libreria su cui è costruito Psych, ed è dovuta ad alcune ambiguità che sorgono quando i due punti sono ammessi nel contesto del flusso.

C'è uno Ruby bug su questo.

La soluzione è di cambiare la vostra Yaml utilizzare il contesto del blocco:

order: 
    - :year 
    - :month 
    - :day 

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