Javascript 外部gem的资产管道编码问题(UTF-8与ASCII-8BIT)

Javascript 外部gem的资产管道编码问题(UTF-8与ASCII-8BIT),javascript,ruby-on-rails,ruby-on-rails-3.1,rubygems,asset-pipeline,Javascript,Ruby On Rails,Ruby On Rails 3.1,Rubygems,Asset Pipeline,我正在尝试创建一个包装d3.js的gem,源代码可以在 所以当我把这个宝石放进我的宝石档案 gem "d3-rails", :git => "git://github.com/iblue/d3-rails.git" 当我在application.js中包含javascript时: //=require d3 然后,我的资产编译失败,编译后的application.js只包含 throw Error("Encoding::CompatibilityError: incompatible

我正在尝试创建一个包装d3.js的gem,源代码可以在

所以当我把这个宝石放进我的宝石档案

gem "d3-rails", :git => "git://github.com/iblue/d3-rails.git"
当我在application.js中包含javascript时:

//=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使用完全相同的gem结构,并且可以正常工作。我做错了什么

编辑

我也看到了这个问题:。此处不适用,我的文件是有效的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 

错误是来自WEBrick服务器还是其他原因?
rake资产:预编译
有效吗?(别忘了清理资产)


如果后者失败,请再次检查$LANG环境变量的值是否为UTF-8(使用
env
)。如果rake任务正常,但应用程序失败,则可能是服务器环境变量。

是否尝试检查是否存在?还可以尝试二分法:删除部分文件以查看是否可以开始工作。您还可以检查application.js的编码吗?错误表明这两个文件不兼容,您不仅应该检查d3文件是否为UTF-8,还应该检查application.js是否为UTF-8。
rake assets:precompile
工作正常。生成的application.js按预期包含d3库。我删除了生成的
public/assets
目录并重新启动了WEBrick。现在错误已经消失了。我没有任何解释。我在开发过程中遇到了类似的问题。用两行代码解决了这个问题:
RAILS\u ENV=development rake assets:precompile
,然后是
RAILS\u ENV=development rake assets:clean
虽然我觉得这听起来很傻,但iblue和Yuri说它可以工作。你知道如何编译资产然后删除它们来解决这个问题吗?我已经有过几次这样的情况,只要
RAILS\u ENV=development rake-assets:clean
和服务器重启就足够了。最近一次,
public/assets
根本不存在,所以我不知道它是如何修复的。甚至没有在开发中使用资产完整资产管道,但Yuri的建议对我有效。唯一的解释是Rails资产管道非常疯狂,并且时常处于糟糕的状态。处于错误状态时强制编码问题?看起来还是很奇怪
# -*- 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!