Глобальные настройки для решения недопустимого многобайтового символа (US-ASCII) в Rails 3 - PullRequest
9 голосов
/ 27 апреля 2011

Моя проблема похожа на Недопустимый многобайтовый символ Rails 3 (US-ASCII)

Решение, представленное там, действительно работает, но я считаю, что это немного глупо включать комментарий # кодировка: UTF-8 к каждому файлу, который использует символы не ASCII.

В config / application.rb у меня есть следующая опция:

# Configure the default encoding used in templates for Ruby 1.9.
config.encoding = "utf-8"

Но это не помогает.

Может быть, какой-то другой вариант глобальной конфигурации представлен именно для таких случаев?

Ответы [ 3 ]

2 голосов
/ 29 апреля 2011

По умолчанию Ruby 1.9 нет способа использовать UTF-8 для всех исходных файлов (и да, это огромный PITA).

Параметр config.encoding говорит Rails о чем-то, ничего общего с Ruby.

Лучшее решение Я придумал, полагается на то, что я не видел упомянутым. Есть еще один способ заставить Ruby 1.9 видеть файл как UTF-8, вместо того, чтобы использовать этот магический комментарий, вы можете включить UTF-8 BOM (Byte Order Marker) в ваш файл. Ruby 1.9 поступит правильно.

Теперь о крутой части - я использую gvim, и на самом деле очень просто настроить gvim для помещения спецификации в каждый файл, в котором она должна быть. Это так же просто, как добавить это к моему .vimrc:

set bomb

Не уверен, используете ли вы gvim или другие редакторы могут это сделать. Итак, очевидно, YMMV:)

1 голос
/ 08 октября 2011

Вы можете установить переменную среды RUBYOPT=-Ku при запуске приложения, и оно заставит ruby ​​(даже 1.9) принять кодировку utf-8 для всех .rb исходных файлов.

Хотя для приложения rails я бы скорее рекомендовал не использовать этот трюк, а вместо этого поместить ваши не-ascii части в файлы i18n и ссылаться на них через I18n.t.

Это немногоустановка более утомительна, если приложение уже запущено и работает, но если вам когда-нибудь понадобится перевести его на другой язык, вы уже на полпути.

0 голосов
/ 29 марта 2012

Вы можете установить это в своем файле application.rb, если вы фактически кодируете многобайтовые символы непосредственно в своих шаблонах.

Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8

Это эквивалентно вводу:

# encoding: UTF-8

вверху каждого файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...