@shadeofpast

Вызов команды оболочки, содержащей русские символы, в ruby?

Добрый день.
Вызов команды консоли
cmd = '/usr/bin/mediainfo "/var/avalon/dropbox/Лекции_для_молодых_ученых/Nabiullin_SciERes_1.flv" --Output=XML'
out = `#{cmd}`

в конкретном rails проекте (avalon media system, ruby 2.1.5, rails 3.3.2), где путь к файлу содержит русские буквы, возвращает код 1 (вероятно файл не найден). Если убрать русские буквы из пути, то все нормально.
Если вызвать другую программу (например `head "/var/avalon/dropbox/Лекции_для_молодых_ученых/Nabiullin_SciERes_1.flv"`) - все ок. Если вызвать первую команду в irb (или в окружение проекта) - все ок.
Имхо, проблема в кодировке.
Вопрос - как решить ее?)

Подробности:
При попытке добавить файл в коллекцию с русскими символами в системе avalon media system вызывается ошибка в файле строка 543. Которая отсылает нас к вызову внешней команды консоли в геме media info в файле строка 473.
Использование этого гема в irb успешно выполняется. Кодировка пути к файлу utf-8. Кодировка консоли utf-8.
Чертова магия.
Спасибо.
  • Вопрос задан
  • 2667 просмотров
Решения вопроса 1
@shadeofpast Автор вопроса
Проблема в том, что для avalon ENV["LANG"] = С.
ENV["LANG"]='en_US.utf-8'решил проблему.
Всем спасибо.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
conf
@conf
Ruby developer
Кажется, баг в mediainfo. Локально у вас нормально работает? Какая ОС?
Попробуйте по шагам:
1) Проверьте вручную команду в консоли (bash)
2) Проверьте работу гема в rails консоли, а не просто в irb, может конфликтуют какие-то гемы: bundle exec rails c
3) Проверьте кодировку строки с именем файла (удобно делать через гем pry-rails, ставим binding.pry в нужном месте и дебажим)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы