Неверное кодирование строк в дампе YAML - PullRequest
0 голосов
/ 08 апреля 2019

Ruby версия: 2.2.5 Версия Rails: '~> 4.0.13'

Почему я и мой друг получили разные результаты при попытке преобразовать строку в YAML с использованием метода YAML.dump?

[1] pry(main)> YAML.dump("foo")
=> "--- foo\n"
[2] pry(main)> "foo".to_yaml
=> "--- foo\n"

Пока у него есть:

[1] pry(main)> YAML.dump("foo")
=> "--- foo\n...\n"
[2] pry(main)> "foo".to_yaml
=> "--- foo\n...\n"

С тройными точками после новой строки (...)

ОБНОВЛЕНО

Я подтвердил, что мои рельсы используют Psych в качестве движка YAML-анализатора в консоли rails:

2.2.5 :002 > YAML
 => Psych
2.2.5 :004 > Psych.dump("foo")
 => "--- foo\n"
2.2.5 :005 > YAML.dump("foo")
 => "--- foo\n"
2.2.5 :006 >

Но все равно результат несколько иной. Для получения дополнительной информации у меня не установлен syck gem, и он не требуется ни в каких файлах в моем проекте rails.

1 Ответ

1 голос
/ 08 апреля 2019

Похоже, что "Вы" могли бы использовать syck в качестве процессора YAML, в то время как "Он" использует psych. Например.

 require 'syck' 
 require 'psych'
 Syck.dump("foo")
 #=> "--- foo\n"
 Psych.dump("foo")
 #=> "--- foo\n...\n"

Оба являются действительными синтаксическими анализаторами / излучателями YAML сами по себе, хотя Psych предпочтительнее, поскольку 1.9 и Syck действительно существуют только как драгоценный камень для обратной совместимости и были полностью удалены из стандартной библиотеки ruby ​​с 2.0.0

.

Что касается того, почему «Вы» каким-то образом используете Syck, то вместо этого я не могу сказать без гораздо большей информации, чем было предоставлено в этом посте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...