7

que estoy tratando de crear una joya que envuelve d3.js, Fuente se pueden encontrar en https://github.com/iblue/d3-railsactivos problemas tubería de codificación UTF-8 (vs. ASCII-8BIT) con la gema externo

Así que cuando incluyo esta joya en mi Gemfile

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

y cuando incluyo el código JavaScript en mis application.js:

//=require d3 

Entonces mi compilación activo falla y mis application.js compilados solo contiene

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

Estoy usando Rails 3.1.3 y ruby-1.9.3-p125. jQuery usa exactamente la misma estructura de gema y funciona. ¿Qué estoy haciendo mal?

EDITAR:

También vi esta pregunta: Ruby 1.9 throwing javascript encoding error. Esto no se aplica aquí, mi archivo es UTF-8 válidos:

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 

EDIT 2:

También traté de insertar algún vudú en mi config/environment.rb. No funciona:

# -*- 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! 
+0

¿Alguna vez intentó verificar la presencia de http://en.wikipedia.org/wiki/Byte_order_mark? Pruebe también la bisección: elimine partes del archivo para ver si las cosas comenzarían a funcionar. – kirilloid

+0

¿Se puede verificar también la codificación de la aplicación.js? El error dice que los dos archivos son incompatibles, debe verificar no solo que el archivo d3 sea UTF-8, sino también que su application.js sea. – mixonic

Respuesta

9

¿El error proviene de un servidor WEBrick u otra cosa? ¿Funciona rake assets:precompile? (no se olvide de borrar los activos después)

Si esto último falla, verifique dos veces que el valor de sus variables de entorno $ LANG es UTF-8 (con env). Si la tarea de rake funciona pero la aplicación está fallando, entonces podría ser el servidor env vars.

+3

'rake assets: precompile' funciona sin problemas. La aplicación.js generada contiene la biblioteca d3 como se esperaba. Eliminé el directorio 'public/assets' generado y reinicié WEBrick. Y ahora el error simplemente se fue. No tengo ninguna explicación. – iblue

+4

Tuve un problema similar durante el desarrollo. Lo resolvió con dos líneas: 'RAILS_ENV = activos de desarrollo de rake: precompile' y luego' RAILS_ENV = desarrollo de activos de rake: clean' – Yuri

+0

aunque suena completamente tonto para mí, funciona iblue y, según Yuri. ¿Alguna idea de cómo compilar los activos y luego eliminarlos resuelve este problema? – DiegoFrings

Cuestiones relacionadas