erubis: `scan ': недопустимая последовательность байтов в US-ASCII (ArgumentError) - PullRequest
0 голосов
/ 28 июня 2018

Я столкнулся с этой ошибкой при рефакторинге небольшого веб-сервиса. Интересно, что на production-сервере все работает нормально.

.../erubis-2.7.0/lib/erubis/converter.rb:132:in `scan': invalid byte sequence in US-ASCII (ArgumentError)
        from .../erubis-2.7.0/lib/erubis/converter.rb:132:in `convert_input'
        from .../erubis-2.7.0/lib/erubis/converter.rb:36:in `convert'
        from .../erubis-2.7.0/lib/erubis/engine.rb:30:in `initialize'

Я запускаю apache с ruby ​​2.3.3p222 (2016-11-21) [x86_64-linux-gnu] на коробке с Debian 9.

Вот мой код:

input = File.read('/somedir/chpwd.html')
eruby = Erubis::Eruby.new(input)

Я добавил #encoding: utf-8 в начало моего ruby-скрипта и обыскал сеть вверх и вниз, но не нашел разрешения.

1 Ответ

0 голосов
/ 28 июня 2018

Оказывается, проблема во входе. erubis пытается разобрать его как ASCII, но встречает некоторые неприятные символы и падает на его лице.

К сожалению, erubis не комментирует вопросы кодирования, и поэтому я нашел решение с помощью этого ответа: Предоставляет ли Ruby способ выполнять File.read () с указанной кодировкой?

Скажите ruby, какая кодировка данных во время чтения, примерно так:

File.read('/someir//chpwd.html', :encoding => 'utf-8')

И Эрубис справится с этим правильно

...