我在Ruby on Rails應用程序中使用ActiveRecord :: Store模塊時遇到了一個奇怪的問題。據我所知,這個模塊使用'serialize'方法,所以它只是使用ruby內置的心靈寶石將數據序列化爲yaml格式。Ruby - LoadError enc/trans/single_byte
它的工作原理確定的大部分時間,但有時我得到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和Ruby 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相同的錯誤。這個問題中最奇怪的部分是這個錯誤不時發生。
所以也許有人也遇到過這個問題,並已經找到了解決方案?或者它看起來更像是一個心理問題,我應該將它提交給維護者?
在此先感謝您的幫助!
編輯:問題是不是直接關係到心理寶石。這是不尋常的紅寶石設置的一般問題。詳情請參閱下面的接受答案。
rking,謝謝你的建議!你指出我正確的方向。 已解決。問題很簡單:我在源代碼中使用非ASCII字符,所以我必須在ruby解釋器中打開unicode模式(通過魔法註釋)。但由於不尋常的設置(其他用戶訪問ruby的主目錄已關閉),ruby無法使用其內部代碼對代碼進行轉碼。 解決方案:打開dir,其中安裝了ruby,至少安裝了啓動ruby解釋器的用戶。 rking,你能否用這個信息填寫你的答案,以便我可以接受它作爲最終解決方案?我希望它能幫助別人。 – rgt600