22

升级到 ruby​​ 1.9.3 后,我的一个应用程序运行良好,但当我尝试使用 capistrano 部署时,我尝试转换的第二个应用程序在“assets:precompile”阶段失败。这是堆栈跟踪:

    rake aborted!
    rake aborted!
    invalid byte sequence in US-ASCII
    /Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/trace_output.rb:16:in `block in trace_on'
    /Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/trace_output.rb:14:in `map'
    /Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/trace_output.rb:14:in `trace_on'
    /Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:328:in `trace'
    /Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:183:in `display_error_message'
    /Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:169:in `rescue in standard_exception_handling'
    /Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:159:in `standard_exception_handling'
    /Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:88:in `load_rakefile'
    /Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:72:in `block in run'
    /Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:160:in `standard_exception_handling'
    /Users/george/.rvm/gems/ruby-1.9.3-p392@global/gems/rake-10.0.4/lib/rake/application.rb:70:in `run'
    /Users/george/.rvm/gems/ruby-1.9.3-p392@rails3211/bin/ruby_noexec_wrapper:14:in `eval'
    /Users/george/.rvm/gems/ruby-1.9.3-p392@rails3211/bin/ruby_noexec_wrapper:14:in `<main>'    

我已经阅读了许多帖子并尝试了一些建议,但无济于事。我尝试将以下内容添加到我的 gemfile 的顶部:

if RUBY_VERSION =~ /1.9/
  Encoding.default_external = Encoding::UTF_8
  Encoding.default_internal = Encoding::UTF_8
end

但这并没有什么不同。

我检查了 LANG 和 LC_ALL 环境变量如下

$ echo $LC_ALL
en_NZ.UTF-8

$ echo $LANG
en_NZ.UTF-8

恐怕我根本不了解该消息,也不知道如何识别有问题的文件。

我无法运行任何 rake 任务 - 它给出了相同的错误。

请注意,我可以在开发模式下完美地运行该应用程序。

4

7 回答 7

30

添加

#encoding: utf-8 

到 Rakefile 的第一行(或任何包含奇怪字符的文件)

于 2013-04-11T11:55:55.533 回答
5

通过一次删除一个来跟踪有问题的 rake 文件。

lib/tasks/delete_me.rake下的文件

然后重新耙或重新启动曾经给您带来问题的问题。一旦问题消失git diff,请查看哪个文件是罪魁祸首,并使用您最喜欢的编辑器更改文件的编码。

IE。,

vim lib/tasks/delete_me.rake :set fileencoding=utf-8 :wq

然后重新耙,你应该重新投入使用。

于 2013-07-30T20:41:28.147 回答
2

第一次运行

$ sudo gem install magic_encoding

然后进入文件夹并运行

$ magic_encoding

准备好!

于 2014-03-28T16:55:20.627 回答
1

我遇到了类似的问题,“错误”是我的名字:它包含一个非 US-ASCII 字符 (ö) 这打印在 setup.rb 中并导致了问题。我将其更改为“oe”,效果很好。

我会向 bitnami 发送一封电子邮件,让它以某种方式改变

于 2013-12-06T10:40:25.690 回答
1

确保您没有以罗马字(日语)输入文件。或者其他一些非 US-ASCII 语言的英文字符设置。

我尝试运行 rake db:seed 并遇到类似的错误。原来我一直在用日文罗马字符输入我的种子文件。在开始我的项目之前,我忘记将我的键盘输入改回美国。

于 2013-07-06T01:58:18.220 回答
0

我在尝试运行任何 rake 任务时遇到了类似的错误(我使用 Rails 3.2 和 Ruby 1.9.3)。我尝试了上述所有解决方案,但均未成功。后来我发现我是一个导致错误的特定 gem(在我的例子中是 Faker gem,它是几天前更新的)。我删除了 gem(它没有被使用),一切都开始工作了!因此,我的建议是,如果您遇到此类问题并且此处列出的解决方案均无效,请检查每个 gem 的版本并查看其中是否已更新。尝试删除它们或设置兼容版本。

于 2016-02-23T13:53:34.173 回答
0

这个错误出现在一个新项目上,我正在设置它的开发环境来工作。

这是一个抛出错误的 rake 任务,但在检查其文件编码时,它是 UTF-8。

所以,这个有问题的任务是从另一个文件(也有 UTF-8 编码)中提取数据。错误仍然存​​在。

所以,而不是按原样读取文件(即File.read("myfile.rb")

我将其更改为:

File.read("myfile.rb", :encoding => 'utf-8'),按照此解决方案的说明,一切都很好。

于 2018-11-07T15:19:48.437 回答