ошибка рельсов, не удалось разобрать 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 ]

1 голос
/ 13 октября 2011

Хотя ответ, данный @Vicvega, может работать, а может и не работать (не проверял его), он противоречит общему принципу Rails и Ruby «Соглашение о конфигурации» и должен рассматриваться с осторожностью (и даже больше в совместной работе) ,,, хотя "конфигурация" в этом случае не велика

поэтому мой голос идет (если бы я мог голосовать) за тех, кто предложил устранить синтаксические ошибки в файлах YAML.

сейчас ... чтобы исправить ошибку, для меня это была ошибка newby, у меня не было файла локали, который я определил как файл по умолчанию в Config/application.rb в моем Config/locales каталоге

счастливое кодирование

1 голос
/ 23 марта 2012

Если вы похожи на меня и сталкиваетесь с проектом (унаследованным) с сотнями приборов, несколько строк Ruby могут сэкономить вам часы:

require 'yaml'

d = Dir.new('test/fixtures/')
d.each do |file|
  begin
     f =  YAML.load_file('test/fixtures/' + file)
  rescue StandardError
     puts "failed to read test/fixtures/#{file}: #{$!}"
   end
 end

Просто поместите его в свой корень Rails и запустите,мусор, когда вы закончите.

1 голос
/ 09 марта 2012

Я получил эту ошибку при попытке подключиться к удаленной базе данных с паролем 'p@ssword' и выяснил, что psych не нравится символ '@'. Изменен пароль БД и проблема решена.

1 голос
/ 08 марта 2012

У меня была похожая проблема с искаженным файлом перевода YAML.Он использовал переменную перед ее определением.Следующее было неправильно:

...
messages:
  ...
  <<: *errors_messages
...
messages: &errors_messages
...

Его нужно было изменить на:

...
messages: &errors_messages
...
messages:
  ...
  <<: *errors_messages
...

Затем оно снова заработало.

1 голос
/ 21 сентября 2011

У меня была такая же проблема с ruby ​​1.9.2-p180, переход на 1.9.2-p290 решил эту проблему для меня

1 голос
/ 14 апреля 2012

В моем случае было 2 проблемы.

  1. Как уже упоминалось @stwienert, представление массива было проблемой.
  2. Еще одна вещь была, если строка начиналась с% {var} Я получил исключение Parse.Мне пришлось изменить строки соответствующим образом, чтобы избежать начала с% {var}

Например, если строка была

%{user_name} welcome to %{application_name} - Это выдало ошибку

Чтобы исправить это, мне пришлось изменить его на

Hi, %{user_name} welcome to %{application_name}

Надеюсь, это кому-нибудь поможет.

С уважением,

Шардул.

1 голос
/ 08 ноября 2011

Необходимо проверить .yml файлы на наличие ошибок, я обнаружил проблему в моей базе данных .yml

0 голосов
/ 20 февраля 2014

Одной из возможных причин является значения сопоставления не разрешены в этом контексте в строке ...

Вот неправильный пример YAML (пользователь: на самом деле не должен содержать никаких значений,потому что он содержит дочерние элементы some_key и some_other_key)

customer: Customer
user: User
  some_key: value
  some_other_key: value 2

Найти такую ​​проблему нетривиально, особенно если у вас огромный YAML-файл.

Я создал довольно простое регулярное выражениеобнаруживать такие вещи.Я проверил это в RubyMine

^(\s+)['"\w]+:\s?['"\w]+.*\n\1\s\s

Будьте осторожны!Он не работает правильно со специальными символами, такими как ø ø æ и т. Д.

Дайте мне знать в комментариях, работает ли он для вас :)

0 голосов
/ 06 ноября 2013

Для других людей, которые смотрят на это, я обнаружил проблему в rerun.txt, которая вызывается config/cucumber.yml в приложении Rails.rerun.txt был настроен для хранения самого последнего теста на провал огурца, и я как-то ввел странные символы для теста огурца в консоли.Жаль, что я не видел ответ Гленна Ремпе некоторое время назад.

...