Rails глобальная конфигурация кодировки? - PullRequest
1 голос
/ 05 августа 2011

Я работаю над проектом Rails, в котором есть строки с испанскими символами: ñ, á, é, í, ó, ú, etc.

Я должен использовать комментарий «кодирование» (# coding: utf-8) вверху каждого файла, которыйимеет эти символы, чтобы избежать ошибок при запуске приложения.

Как я могу установить эту опцию глобально вместо того, чтобы вводить этот комментарий в каждом файле?Я предполагаю, что это должно идти в инициализаторах или файлах среды.

1 Ответ

3 голосов
/ 05 августа 2011

В этой теме есть отличное сообщение в блоге Джеймса Эдварда Грея .

Вы не должны устанавливать это глобально: ваши исходные файлы могут быть в кодировке utf-8, но авторкакой-то драгоценный камень, который вы используете, мог использовать Shift JIS или что-то еще.Это закончится большим взрывом.

В качестве промежуточного решения можно использовать задачу rake для проверки наличия магического комментария и добавления его, если его нет (код, бессовестно украденный из этого сообщения в блоге ):

desc "Manage the encoding header of Ruby files"
task :check_encoding_headers => :environment do
  files = Array.new
  ["*.rb", "*.rake"].each do |extension|
    files.concat(Dir[ File.join(Dir.getwd.split(/\\/), "**", extension) ])
  end

  files.each do |file|
    content = File.read(file)
    next if content[0..16] == "# coding: utf-8\n\n"

    ["\n\n", "\n"].each do |file_end|
      content = content.gsub(/(# encoding: utf-8#{file_end})|(# coding: utf-8#{file_end})|(# -*- coding: utf-8 -*-#{file_end})/i, "")
    end

    new_file = File.open(file, "w")
    new_file.write("# coding: utf-8\n\n"+content)
    new_file.close
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...