Я пытаюсь запустить тестовый пакет Cucumber (Ruby) из Jenkins, который проверяет, являются ли 2-4 байтовые символы UTF-8 правильными именами для групп.
Я перепробовал несколько решений и несколько дней искал проблему, имеющую отношение к моей.
Ошибка, которая преследует меня:
incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError)
Которая относится к строке, где я пытаюсь отправить команду ssh в CLI на машине FreeBSD, на которой я создаю группу:
$mymachine.cli_ssh.exec!("config group create --name='#{group_name}'")
Где в команде exec!()
есть:
command.force_encoding("UTF-8")
Ошибка возникает только тогда, когда я отправляю 2-4 байтовые символы UTF-8, например:
Группа 'abcd' не вызывает ошибку. и Группа 'ЯЯЯ' вызывает ошибку
Проблема:
Запуск этого скрипта на моей локальной машине Ubuntu работает совершенно нормально, как и на других машинах в моем районе. (именно поэтому я не считаю нужным приводить больше кода, чем дано)
Я уже пробовал установить системные локали на машине Jenkins как en_US.UTF-8 как в качестве системных переменных локали, так и в файле /.bashrc. Нигде я не видел переменной кодировки, установленной на ASCII-8BIT.
Я также пробовал экспортировать системные локали из оболочки Jenkins перед выполнением скрипта.
Мне нужен какой-то ответ или направление, которое поможет мне решить эту проблему.
Проблема была решена путем обновления всех гемов Ruby в системе Jenkins. Вполне вероятно, что некоторые драгоценные камни были устаревшими, даже если они были технически совместимы с версией Ruby, на которой работала машина Дженкинса, и поэтому мог существовать код Ruby, который не был -UTF8.
Если вы столкнетесь с этой проблемой в будущем, я бы рекомендовал убедиться, что все версии gem и ruby согласованы между вашим компьютером Jenkins и рабочим компьютером.