Bezdepbonusu7Программирование: статьи и ответы

Вопрос

YAML - Escape \ в двойных кавычках

Автор вопроса: zozoОтветов: 1

У меня следующая проблема:

Классический проект Symfony 2, phpunit 5.1.7.

В одном файле конфигурации yml у меня есть что-то вроде этого:

mobile_detect:
    service:
        mobile_detector: mobile_detect.mobile_detector.default
    twig_extension_class: "SunCat\MobileDetectBundle\Twig\Extension\MobileDetectExtension"

Я запускаю тесты на своей локальной машине (ubuntu), и все работает нормально.

Затем я развертываю код (среда aws) и пытаюсь запустить тесты. Все вылетает с ошибкой:

"Unescaped character \M".

Я вижу, что в yaml двойные кавычки анализируют строки, поэтому \M действительно является неопределенным символом. Мой вопрос... Почему это рабочий файл на локальном компьютере?

Кроме того, код отлично работает, когда я пытаюсь получить доступ в обычном режиме (через apache - вызов браузера). Почему это тоже хорошо работает?

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

  • как вы развертываете код в среде aws? Проверьте, могут ли быть настройки кодирования в процессе передачи Matteo 19.09.2016
  • Это тоже было мое первое предположение, но с кодировкой все в порядке, я также написал файл вручную в тестовой среде (возникла та же проблема). Я предполагаю, что это phpunit, потому что код работает нормально, если выполняются обычные запросы. zozo 19.09.2016
  • О развертывании (забыл упомянуть об этом) я использую эластичный beanstalk для развертывания. По сути, он создает образ с вашим кодом, переписывает окружение из определенного образа, а затем копирует на него образ кода. После этого он запускает композитор и вызывает некоторые пользовательские сценарии (это не должно влиять на текущую проблему). zozo 19.09.2016
  • Хотя я мало знаю о программном обеспечении, которое вы используете, альтернативой использованию одинарных кавычек является использование двойных кавычек и использование двух обратных косых черт вместо обратных косых черт в вашем тексте. Burt_Harris 20.09.2016

yamlphpunitsymfonyquotesdouble-quotes

Ответы

Ответ 1 · flyx

Есть ли способ сделать тесты на тестовой машине, чтобы интерпретировать yml так же, как на локальных машинах?

Вы спрашиваете, можете ли вы воспроизвести неправильное поведение кода на вашем локальном компьютере в другом месте. Зависимость от неправильного поведения - одна из худших вещей, которые вы можете сделать; это, как правило, исправляется обновлениями программного обеспечения.

Как вы сами заявляете: правильный способ - исправить недействительные файлы YAML. Будь то использование одинарных кавычек или экранирование обратной косой черты другой обратной косой чертой. Не существует решения для сохранения текущих файлов YAML, которое гарантированно будет работать при обновлении программного стека.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы