web-dev-qa-db-ja.com

US-ASCIIの無効なバイトシーケンスでrakeタスクが失敗する

Ruby 1.9.3にアップグレードした後、私のアプリの1つは正常に動作していますが、変換しようとしている2番目のアプリは、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タスクを実行できません-同じエラーが発生します。

開発モードでアプリケーションを完全に正常に実行できることに注意してください。

22
giorgio

追加

#encoding: utf-8 

rakefileの最初の行(または奇妙な文字が含まれているファイル)

30
fotanus

一度に1つずつ削除することにより、障害のあるrakeファイルを追跡します。

つまり、lib/tasks/delete_me.rakeの下のファイル

次に、問題が発生した方を再度レーキまたは再起動します。問題がなくなったら、git diffどのファイルが原因であるかを確認し、お気に入りのエディターでファイルのエンコードを変更します。

すなわち、

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

その後、再度レーキをかけると、サービスに戻るはずです。

5
f1v

ファーストラン

$ Sudo gem install magic_encoding

次に、フォルダに移動して実行します

$ magic_encoding

準備ができました!

2
Daniel

ファイルをローマ字で入力していないことを確認してください。または、他のUS-ASCII以外の言語の英語の文字設定。

Rake db:seedを実行しようとしましたが、同様のエラーが発生していました。シードファイルを日本語のローマ字で入力していたことがわかりました。プロジェクトに取り組む前に、キーボード入力をUSに戻すのを忘れました。

1
user2031423

同様の問題が発生し、「エラー」は私の名によるものでした。非US-ASCII文字(ö)が含まれています。これはsetup.rbに出力され、問題を引き起こしました。 「oe」に変更しましたが、問題なく動作しました。

なんとか変えてもらうためにbitnamiにメールを送ります

1
MrNuss

Rakeタスクを実行しようとすると同様のエラーが発生しました(Rails 3.2 with Ruby 1.9.3)を使用します)。上記のすべてのソリューションを試してみました。後で、エラーの原因となっている特定のgemであることがわかりました(私の場合は、数日前に更新されたFaker gemでした)。gemを削除し(使用されていませんでした)、すべてが始まりました。したがって、この種の問題が発生し、ここにリストされている解決策のいずれも機能しない場合は、各gemのバージョンを確認し、更新されているかどうかを確認することをお勧めします。削除するか、互換性のあるバージョン。

0
ana3ela

このエラーは、開発環境を作業用に設定していた新しいプロジェクトで発生しました。

エラーをスローするのはレーキタスクでしたが、ファイルエンコーディングを確認したところ、UTF-8でした。

したがって、問題のこのタスクは、別のファイル(UTF-8エンコーディングも含む)からデータをプルすることでした。エラーが解決しませんでした。

したがって、ファイルをそのまま読み取る代わりに(つまり、File.read("myfile.rb")

私はそれを次のように変更しました:

File.read("myfile.rb", :encoding => 'utf-8')このソリューション の指示に従って、そしてすべて再び良い。

0
j4v1