在我的 Ruby on Rails 应用程序中使用 ActiveRecord::Store 模块时遇到了一个奇怪的问题。据我了解,该模块在后台使用“序列化”方法,因此它只是使用 ruby 内置的 psych gem 将您的数据序列化为 yaml 格式。
它大部分时间都可以正常工作,但有时我会收到 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 时遇到了同样的错误。而这个问题最奇怪的部分是这个错误不时发生。
那么也许有人也遇到了这个问题并且已经找到了解决方案?还是它看起来更像是心理中的一个错误,我应该将它提交给它的维护者?
提前感谢您的帮助!
编辑:问题与心理宝石没有直接关系。这是不寻常的红宝石设置的一般问题。有关详细信息,请参阅下面接受的答案。