2013-04-11 27 views
22

升級到ruby 1.9.3後,我的其中一個應用工作正常,但我試圖轉換的第二個失敗是「assets:precompile」階段部署與capistrano。 這裏是堆棧跟蹤:rake任務失敗,US-ASCII中的字節序列無效

rake aborted! 
    rake aborted! 
    invalid byte sequence in US-ASCII 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/trace_output.rb:16:in `block in trace_on' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/trace_output.rb:14:in `map' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/trace_output.rb:14:in `trace_on' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:328:in `trace' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:183:in `display_error_message' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:169:in `rescue in standard_exception_handling' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:159:in `standard_exception_handling' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:88:in `load_rakefile' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:72:in `block in run' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:160:in `standard_exception_handling' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:70:in `run' 
    /Users/george/.rvm/gems/[email protected]/bin/ruby_noexec_wrapper:14:in `eval' 
    /Users/george/.rvm/gems/[email protected]/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任務運行 - 它給出了同樣的錯誤。

請注意,我可以在開發模式下完美地運行應用程序。

+0

隨機搜索項目中的文件後。我決定,因爲錯誤消息沒有指定問題的文件名,那麼它可能是與耙自己的事情。刪除包含用於數據庫啓動的硬編碼數據的rake任務可以解決問題。 – giorgio 2013-04-11 22:06:20

回答

30

添加

#encoding: utf-8 

你的Rake文件的第一行(或任何文件在奇怪的字符)

+1

但是我如何找到哪個文件? – giorgio 2013-04-11 12:09:37

+0

謝謝fotanus !!!另外@ giorgio該文件被稱爲'Rakefile' – Trip 2013-04-22 22:15:35

+2

沒有問題文件不是Rakefile。那會很容易!這是我的耙子任務之一,有問題。 – giorgio 2013-04-23 02:24:13

1

確保你不是在你的文件中羅馬字(日語)輸入。或者其他一些非US-ASCII語言的英文字符設置。

我試着運行rake db:seed並得到了類似的錯誤。原來我一直在用日文羅馬字符輸入我的種子文件。在我的項目上工作之前,我忘了將我的鍵盤輸入更改回美國。

+0

你是如何修復它的? – 2013-07-11 21:52:24

+1

@BrenoSalgado他最有可能在他的文件頂部添加正確的編碼,或從他的種子文件中刪除字符。 – fotanus 2013-09-20 17:57:27

+0

@BrenoSalgado是的,我只是刪除了我輸入羅馬字的字符,切換回美國英語並重新輸入。 – user2031423 2013-12-05 01:16:51

5

通過一次刪除一個耙耙文件(s)。

即下的lib /任務/ delete_me.rake

的文件,然後再耙或重新啓動它曾被給你的問題。一旦問題消失 做一個git diff看看哪個文件是罪魁禍首,用你最喜歡的編輯器改變文件的編碼。

VIM的lib /任務/ delete_me.rake :設置fileencoding = UTF-8 :WQ

然後再耙,你應該恢復服務。

1

我有類似的問題,「錯誤」是我的名字:它包含一個非US-ASCII字符(ö)這是在setup.rb中打印並導致了問題。我把它改爲「oe」,它工作正常。

我的E-mail發送給bitnami讓它在某種程度上

2

首先運行

$ sudo gem install magic_encoding 

然後進入該文件夾,然後運行

$ magic_encoding 

準備改變!

+0

韋爾普我做到了,它沒有工作.. – 2014-04-05 19:45:41

+0

這是我的工作,謝謝! – Vsevolod 2015-04-20 06:33:58

0

我在嘗試運行任何rake任務時遇到了類似的錯誤(我使用Rails 3.2和Ruby 1.9.3)。我嘗試了上述所有解決方案,但都沒有取得任後來我發現我是一個導致錯誤的特定寶石(在我的情況下,它是Faker寶石,幾天前更新過)。我刪除了寶石(它沒有被使用),一切都開始奏效了!所以,我的建議是,如果遇到這種問題並且這裏列出的解決方案都不起作用,請檢查每個gem的版本並查看是否有任何更新。嘗試刪除它們或設置兼容版本。

相關問題