2012-11-07 22 views
6

Ruby on RailsアプリケーションでActiveRecord :: Storeモジュールを使用しているときに奇妙な問題が発生しました。私が理解しているように、このモジュールはフードの下で 'シリアライズ'メソッドを使用しているので、データをyamlフォーマットにシリアル化します。Ruby-LoadError enc/trans/single_byte

それはOKほとんどの時間を動作しますが、時々私は、次のようなメッセージで500エラーが表示されます。

LoadError (cannot load such file -- enc/trans/single_byte): 
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/emitter.rb:27:in `write' 
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/emitter.rb:27:in `end_document' 
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/emitter.rb:27:in `visit_Psych_Nodes_Document' 
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/visitor.rb:15:in `visit' 
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/visitor.rb:5:in `accept' 
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/emitter.rb:20:in `block in visit_Psych_Nodes_Stream' 
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/emitter.rb:20:in `each' 
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/emitter.rb:20:in `visit_Psych_Nodes_Stream' 
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/visitor.rb:15:in `visit' 
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/visitors/visitor.rb:5:in `accept' 
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych/nodes/node.rb:46:in `yaml' 
~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/psych.rb:243:in `dump' 

あなたが見ることができるように、私はrbenvとルビー1.9.3-P286を使用します。私のシステムはUbuntu 11.10です。必要なファイルが存在します~/.rbenv/versions/1.9.3-p286/lib/ruby/1.9.1/i686-linux/enc/trans/single_byte.so。 Ruby 1.9.3-p194と同じエラーが発生しました。そして、このエラーは時折発生するこの問題の最も奇妙な部分です。

誰かがこの問題に遭遇し、解決策を見つけた可能性がありますか?あるいは、それは精神のバグのように思えますし、メンテナにそれを提出する必要がありますか?

ありがとうございました!

EDIT:この問題は、精神的宝石とは直接関係しません。これは一般的ではないルビーセットアップの問題です。詳細については、以下の回答を参照してください。

答えて

1

これは開発環境の居心地の良い領域内で起こっていますか?もしそうなら、私はそれをpry-rescuePry.rescue do … endのブロックの下で実行し、その間に突っ走ることを検討したいと思います。

データの違いがあると思われます。このツリーには意図的に非ASCIIが含まれていますか?あなたは以下に示すように、rbenvのインストールは、他のユーザーと共有されている

ruby -e 'Dir["**/*.yml"].each{|e| File.read(e)[/[^\x0-\x7f]/] and puts e}' 

、そのため変更時に権限をやり直してください:あなたはこのようなもので、それを追い詰めることができ

chmod a+r -R ~/.rbenv/ 

かおそらくsrcのような共有グループを作成してください:

+0

rking、あなたの助言のおかげで!あなたは私に正しい方向を指摘しました。 解決しました。問題は簡単でした。私はソースコードに非ASCII文字を使用していますので、(魔法のコメントを通して)RubyインタプリタでUnicodeモードを有効にする必要があります。しかし、Rubyが他のユーザのアクセスから閉鎖されたホームディレクトリのような珍しい設定のために、rubyはコードをコード変換するために内部のものを使用することができませんでした。 解決方法:rubyインタープリタを起動するユーザーに少なくともrubyがインストールされている場所でopen dirを実行します。 rking、この情報で回答を完了することができますか?私は最終的な解決策としてそれを受け入れることができますか?私はそれが誰かを助けることを望む。 – rgt600