ошибка рельсов, не удалось разобрать YAML - PullRequest
76 голосов
/ 13 февраля 2011

После обновления драгоценных камней я получил это:

/home/megas/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/psych.rb:148:in `parse': couldn't parse YAML at line 182 column 9 (Psych::SyntaxError)
    from /home/megas/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/psych.rb:148:in `parse_stream'
    from /home/megas/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/psych.rb:119:in `parse'
    from /home/megas/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/psych.rb:106:in `load'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/RedCloth-4.2.3/lib/redcloth/formatters/latex.rb:6:in `<module:LATEX>'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/RedCloth-4.2.3/lib/redcloth/formatters/latex.rb:3:in `<top (required)>'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/RedCloth-4.2.3/lib/redcloth.rb:21:in `require'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/RedCloth-4.2.3/lib/redcloth.rb:21:in `<top (required)>'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/RedCloth-4.2.3/lib/case_sensitive_require/RedCloth.rb:6:in `require'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/RedCloth-4.2.3/lib/case_sensitive_require/RedCloth.rb:6:in `<top (required)>'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/bundler-1.0.10/lib/bundler/runtime.rb:68:in `require'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/bundler-1.0.10/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/bundler-1.0.10/lib/bundler/runtime.rb:66:in `each'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/bundler-1.0.10/lib/bundler/runtime.rb:66:in `block in require'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/bundler-1.0.10/lib/bundler/runtime.rb:55:in `each'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/bundler-1.0.10/lib/bundler/runtime.rb:55:in `require'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/bundler-1.0.10/lib/bundler.rb:120:in `require'
    from /home/megas/Work/railscasts/config/application.rb:10:in `<top (required)>'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/commands.rb:28:in `require'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/commands.rb:28:in `block in <top (required)>'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/commands.rb:27:in `tap'
    from /home/megas/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/commands.rb:27:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

ruby-1.9.2-p136 rails 3.0.3

Попытка переустановить гем RedCloth, не помогло,Система хочет использовать только версию 4.2.3

Есть идеи, как это исправить?Спасибо

Ответы [ 29 ]

2 голосов
/ 23 февраля 2011

То, что исправило это в моем деле, было действительно искаженным файлом перевода YAML в:

config/locales/bg.yml

Исправил ошибку YAML, и все было хорошо. : -)

2 голосов
/ 19 сентября 2012

Я сталкивался с этим, когда использовал библиотеку r18n в приложении Sinatra, которое я строю, и в моем файле перевода у меня было следующее:

day: !!pl
  0: 0 days
  1: 1 day
  n: %1 days

которая раньше работала просто отлично в старом проекте под Ruby 1.8.7, но не работала под Ruby 1.9.3.

Ответ @SB дал мне подсказку, необходимую для решения моей проблемы.Более новый YAML гулял в %1.Некоторое быстрое копание и эксперимент с irb, и теперь я знаю, что более новая версия синтаксического анализатора YAML требует, чтобы вы помещали кавычки вокруг строк, начинающихся с %1, поэтому я просто изменил свой перевод на

day: !!pl
  0: 0 days
  1: 1 day
  n: "%1 days"

и вуаля - неприятное сообщение об ошибке исчезло.

2 голосов
/ 14 мая 2012

У меня была эта проблема.У меня была проблема с дополнительной вкладкой в ​​файле database.yml.

2 голосов
/ 03 мая 2011

В моем случае это не проблема Bundle: (предполагается, что Ruby 1.9)

  • По умолчанию Ruby использует 'psych' (более новая и поддерживаемая библиотека yaml, связанная с библиотекой C:libyaml) если libyaml присутствует
  • В противном случае Ruby использует 'syck' (старый и не поддерживается)
  • YAML :: ENGINE.yamler = 'syck', таким образом, вынуждает Ruby использовать 'syck'на машине, где также установлен 'psych'

Подробнее здесь: require "yaml" не использует psych по умолчанию

2 голосов
/ 30 ноября 2011

Для тех, кто занимается этой проблемой, я только что обнаружил, что мой database.yml вызывал эту ошибку, потому что между паролем: ключевое слово и паролем не было пробела. Почти невидимая ошибка и с database.yml, который работал без ошибок на более ранней версии rails.

2 голосов
/ 26 июня 2013

Мне удается решить эту проблему, установив gem psych внутри группы: development и: test.

gem 'psych'
1 голос
/ 26 февраля 2013

У меня была действительно очень странная проблема, потому что у меня были пробелы после.Например:

title: "NASA"

Не работает, но

title:"NASA"

Сделано.

1 голос
/ 16 ноября 2012

Пшич парс это отстой до глубины души.Я не уверен, что это элегантное решение, но мне удается решить эту проблему, удалив его.

gem uninstall psych
1 голос
/ 28 сентября 2012

Удалить неиспользуемые базы данных из database.rb.Если вы используете MySQL и PostgreSQL отсутствует, то удалите код базы данных PG из databases.yml.

1 голос
/ 30 июля 2012

Ну, на всякий случай это поможет ...
Что я сделал:
- выберите все и скопируйте из https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale/es.yml в новый es.yml с блокнотом ++
- попытался посмотретьВ этом новом файле с текстовым редактором IDE netBeans я получил предупреждение о безопасной загрузке с помощью utf8 (не могу вспомнить точный текст).Следовательно, не открывайте его в этом текстовом редакторе.
- переключил локальную конфигурацию / application.rb i18n
- когда я загрузил страницу irb, я получил сообщение «невозможно проанализировать YAML в строке 0 столбца 0», ссылаясь наPsych.
- пошел в IRB и загрузил файл с syck, все было в порядке;переключился на psych и получил ту же ошибку.

Как я ее решил:
- вернулся, чтобы скопировать содержимое из https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale/es.yml, но на этот раз я вставил его во вновь созданный файл с редактором netBeans.
- перезапущен webRick.
- проблема решена.
С наилучшими пожеланиями,
Виктор

...