Почему мой сервер разработки Sproutcore сбрасывает соединения с «недопустимой последовательностью байтов в US-ASCII»? - PullRequest
4 голосов
/ 30 августа 2010

Вот стек: Sproutcore 1.0.1046. Ruby 1.9.1, в RVM. Тонкий 1.2.7. Тор 0,13,8. Стойка 1.2.1. Eventmachine 0.12.10. Erubis 2.6.6.

Когда я запускаю sc-server в любом приложении, мой первый запрос к этому серверу выдает это в журнале консоли:

ArgumentError: invalid byte sequence in US-ASCII

... сопровождаемый этой трассировкой стека . (Я перечислил драгоценные камни, которые появляются в трассировке стека выше, но есть полный список гемсетов в той же сущности, что и трассировка стека.)

Исследование сообщения об ошибке указывает на то, что это общая проблема с Ruby 1.9, но трассировка стека предполагает, что проблема в одном из драгоценных камней где-то.

У меня есть:

  • Обновил мою ОС (Mac OS X 10.5 до 10.6), чтобы получить последнюю версию gcc от Apple.
  • Переустановил RVM.
  • Переустановил Ruby.
  • Переустановлены все соответствующие драгоценные камни.

И все же у меня все еще есть эта проблема в одной системе, но не в другой. (Обратите внимание, что над этим кодом работают несколько разработчиков, и только я вижу эту проблему. Я на 99% уверен, что это не наш код.) Я думаю, что я говорю, что я очистил и перестроил много драгоценных камней, чтобы попытаться изолировать или удалить этот глюк, но я до сих пор не избавился от него.

Куда мне смотреть дальше?

Ответы [ 5 ]

5 голосов
/ 30 августа 2010

У вас есть особая настройка в вашей среде bash, которая устанавливает ruby ​​для использования US-ASCII, это случилось со мной при попытке запустить sc-сервер с удаленного терминала ... Я не совсем уверен, что это такое, ноон не использует UTF-8, и вот тогда он сталкивается с проблемами.

2 голосов
/ 30 августа 2010

Возможно, вы также можете изменить Encoding.default_external

1 голос
/ 02 февраля 2012

В моем случае ArgumentError произошел во время вызова развертывания Capistrano, который включает в себя ruby ​​net-ssh (ruby 1.9.2p290, net-ssh 2.3.0).Ни одно из вышеупомянутых решений не сработало, и ни одна из других причин, о которых я до сих пор читал: например, «странный символ в файле ключа» и т. Д.

Наконец, я не нашел ни одного ASCII-символа встрока комментария (!) в файле ~ / .ssh / config в кодировке ASCII.BINGO!

1 голос
/ 09 декабря 2010

У меня была та же проблема с RSS-лентами, которую я отображал в приложении Rails 2.3.8 с Ruby 1.9.2.Моя проблема не была решена с помощью метода application_controller.rb before_filter, упомянутого здесь.Исправление заключалось в том, чтобы поместить в файл RAILS_ROOT / config / initializers / string_encodings.rb следующее:

Encoding.default_external = 'UTF-8'

, который работал дляя весь сайт, а не на уровне контроллера.

1 голос
/ 16 сентября 2010

Большое спасибо за предложение Encoding.default_external. У меня была та же проблема, несмотря на правильно установленные магические комментарии и переменные среды. В Rails 2.3.9 я добавил это before_filter в application_controller.rb, решил проблему:

def set_encoding
  Encoding.default_external = 'UTF-8'
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...