Как сгладить файл YAML, чтобы в нем не было псевдонимов (в ruby)? - PullRequest
0 голосов
/ 09 апреля 2019

Допустим, у меня есть:

-: &defaults
  client_id: 'invalid_client_id'
  client_secret: 'secret'

production:
  <<: *defaults
staging:
  <<: *defaults

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

IOW:

production:
  client_id: 'invalid_client_id'
  client_secret: 'secret'
staging:
  client_id: 'invalid_client_id'
  client_secret: 'secret'

Редактировать:

Предложение сделать YAML.dump из YAML.load работает, но оно оставляет исходный псевдоним в документе:

---
"-":
  client_id: invalid_client_id
  client_secret: secret
production:
  client_id: invalid_client_id
  client_secret: secret
staging:
  client_id: invalid_client_id
  client_secret: secret

Это не совсем то, что мне нужно.Рад принять ответ, но хочу посмотреть, есть ли другие идеи.

Ответы [ 2 ]

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

То, что вы хотите в своем исправленном вопросе, нарушает сам YAML.В этом случае вы должны удалить исходный псевдоним вручную:

require 'yaml'
yml = YAML.load(File.open 't.yml')
yml.delete('-')
yml.to_yaml
1 голос
/ 09 апреля 2019

Просто используйте YAML.dump

require 'yaml'
yaml = YAML::load(File.open('t.yml'))
YAML.dump yaml
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...