Проблемы кодирования конвейера активов (UTF-8 против ASCII-8BIT) с внешним гем - PullRequest
7 голосов
/ 02 марта 2012

Я пытаюсь создать драгоценный камень, обертывающий d3.js, источник можно найти на https://github.com/iblue/d3-rails

Итак, когда я включаю этот драгоценный камень в мой Gemfile

gem "d3-rails", :git => "git://github.com/iblue/d3-rails.git"

И когда я включаю JavaScript в моем application.js:

//=require d3

Тогда моя компиляция ресурса не удалась, и мой скомпилированный файл application.js просто содержит

throw Error("Encoding::CompatibilityError: incompatible character encodings: UTF-8 and ASCII-8BIT")

Я использую Rails 3.1.3 и ruby-1.9.3-p125. jQuery использует точно такую ​​же структуру гемов, и это работает. Что я делаю не так?

EDIT

Я также видел этот вопрос: Ошибка кодирования javascript в Ruby 1.9 . Это не относится здесь, мой файл действителен UTF-8:

ruby-1.9.3-p125 :001 > d = File.read("./d3.js")
 => [...]
ruby-1.9.3-p125 :002 > d.encoding
 => #<Encoding:UTF-8> 
ruby-1.9.3-p125 :003 > d.valid_encoding?
 => true 

РЕДАКТИРОВАТЬ 2 :

Я также попытался вставить немного вуду в мой config/environment.rb. Не работает:

# -*- encoding : utf-8 -*-
# Load the rails application
require File.expand_path('../application', __FILE__)

# --------- VOODOO BEGINS HERE -----------------
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
# --------- END VOODO --------------------------

# Initialize the rails application
Ratecode::Application.initialize!

1 Ответ

9 голосов
/ 08 марта 2012

Ошибка с сервера WEBrick или что-то еще? rake assets:precompile работает? (не забудьте очистить активы после)

Если последнее не удается, дважды проверьте, что значение переменных среды $ LANG равно UTF-8 (с env). Если задача rake работает, но приложение не работает, то это может быть env vars сервера.

...