Красивее для YAML — Ошибка синтаксиса: вложенные сопоставления недопустимы в компактных отображениях

#ruby-on-rails #ruby #yaml #prettier #prettier-vscode

#ruby-on-rails #ruby #yaml #красивее #красивее-vscode

Вопрос:

В моем проекте есть файл YAML для NewRelic newrelic.yml , в котором есть строка с кодом Ruby для настройки app_name . Существующая конфигурация работает, и мне нужно отредактировать файл, но когда я пытаюсь выполнить yarn commit сбой со следующей ошибкой, это для меня выглядит как более красивая ошибка.

Я пытался добавить #prettier-ignore перед строкой, но это все равно приводит к сбою фиксации.

 node_modules/prettier/index.js:13588
      throw error;
      ^

SyntaxError: Nested mappings are not allowed in compact mappings (18:13)
  17 |   # Relic.  For more details, see https://docs.newrelic.com/docs/apm/new-relic-apm/maintenance/renaming-applications
> 18 |   app_name: <%= ENV["SERVER_ENV"] == 'staging' ? 'MyApp (Staging)' : 'MyApp' %>
     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 

Мой редактор кода — VSCode, если это имеет значение.

Поэтому я хотел бы либо выяснить, почему # prettier-ignore это не работает так, как указывают более красивые документы. Или выясните, как отформатировать вещи для передачи, что, очевидно, является предпочтительным вариантом.

Ответ №1:

Похоже, что Prettier не обрабатывает ERB в файлах YAML.

Я бы добавил все распространенные конфигурации в один блок, а затем повторно использовал бы этот блок с псевдонимами YAML.

 common: amp;default_settings
  license_key: 1234
  log_lever: info
  # ...

production:
  <<: *default_settings
  app_name: MyApp

staging:
  <<: *default_settings
  app_name: MyApp (Staging)
 

Комментарии:

1. Спасибо, я попробую это, кажется, что в большинстве руководств показано использование ERB для установки имен для разных сред из CONFIG_VARS и лицензионного ключа. Так что, возможно, было бы лучше, чтобы Красивее игнорировать весь файл. (Что является обломком, поскольку приятно убедиться, что остальное форматирование правильное).