gpt4 book ai didi

ruby-on-rails - ruby - LoadError enc/trans/single_byte

转载 作者:数据小太阳 更新时间:2023-10-29 07:08:15 54 4
gpt4 key购买 nike

我在我的 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 时遇到了同样的错误。这个问题最奇怪的部分是时不时会出现这个错误。

所以也许有人也遇到过这个问题并且已经找到了解决方案?或者它看起来更像是一个 psych 中的错误,我应该将它提交给它的维护者?

在此先感谢您的帮助!

编辑:问题与 psych gem 没有直接关系。这是不寻常的 ruby 设置的普遍问题。有关详细信息,请参阅下面接受的答案。

最佳答案

这是否发生在您的开发环境的舒适范围内?如果是这样,我会考虑在 pry-rescuePry.rescue do … end block 下运行它并在那里四处寻找。

我怀疑是数据差异。这棵树中是否有意包含任何非 ASCII 码?你可以用这样的东西找到它:

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

正如您在下面指出的,rbenv 安装与其他用户共享,因此请务必在进行任何更改时重做权限:

 chmod a+r -R ~/.rbenv/

或者创建一个共享组,例如src,然后:

 chgrp src ~/.rbenv && chmod g+r -R ~/.rbenv

关于ruby-on-rails - ruby - LoadError enc/trans/single_byte,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13277729/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com