我在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