问题标签 [syck]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 畸形字符串的 YAML 编码,模型序列化问题
我已经隔离了 Ruby on Rails 的一个问题,其中带有序列化列的模型无法正确加载已保存到其中的数据。
进去的是一个 Hash,出来的是一个 YAML 字符串,由于格式问题无法解析。我希望序列化程序可以正确存储和检索您提供的任何内容,因此似乎出现了问题。
有问题的麻烦字符串的格式如下:
换行、缩进的第二行和不缩进的第三行的组合会导致解析器失败。省略空行或缩进似乎可以解决问题,但这似乎是序列化过程中的一个错误。由于它需要一组相当独特的情况,我敢打赌这是一些没有得到妥善处理的奇怪边缘情况。
Ruby 附带并由 Rails 使用的 YAML 模块看起来将大部分处理委托给 Syck,但确实为 Syck 提供了一些关于如何编码它正在发送的数据的提示。
在 yaml/rubytypes.rb 中有 String#to_yaml 定义:
似乎有一个检查以 ':' 开头的字符串,并且在反序列化时可能会被混淆为符号,并且 :quote2 选项应该指示在编码过程中引用它。调整此正则表达式以捕获上述条件似乎对输出没有任何影响,因此我希望更熟悉 YAML 实现的人可以提出建议。
ruby-on-rails - ActiveRecords 未正确序列化为 yaml
当我序列化活动记录时,我发现 yaml 格式因我运行的机器而异。在一个盒子上,我得到:
代替
第一个版本是一个问题,因为当 yaml 被反序列化时,主动支持需要做一些魔法来正确填充活动记录。是什么导致了这种差异,我如何确保使用第二种格式?
我正在使用 ruby 1.9.2 并且我已经强制 yaml 引擎使用 syck 使用
在 boot.rb(rails 应用程序)中。
更新
进一步挖掘后,我发现 ActiveRecord 类型没有在 yaml 中注册。在它工作的服务器上进行以下调用:
包括:
行为不正确的服务器缺少此类型。现在的问题是我不知道为什么没有注册该类型。
ruby-on-rails - 使用 YAML 的 JRuby
当我将 Rails 与 YAML 一起使用时,我将 boot.rb 更改为
它适用于普通的 Ruby。
当我将应用程序从 Ruby 转移到 JRuby 时,它不起作用。
我应该在 JRuby 中哪里写这些行?
ruby - 如何在 1.9 中使用 Syck 在 JRuby 中执行 YAML?
如果我在 Ruby 1.9 模式下运行 JRuby,并告诉它使用 Syck 而不是 Psych,似乎没有任何效果。我错过了什么吗?
背景:我正在尝试使用 Syck,因为我在如何反序列化 Psych 中的类?
ruby - 为什么 YAML 解析器(syck 和 psych)的行为不同?
看这个案例:
ruby 1.9.2p0(2010-08-18 修订版 29036)[i686-linux]
当我使用 psych 解析器并且我需要格式化一个模糊地类似于日期的字符串时,它会引发异常,因为他认为这是一个日期字符串。使用 syck 不会出现此问题。
有人知道吗?
ruby - 如何在内部使用 TCPServer 序列化对象?
为了加快链中特定脚本的频繁重复运行,我开始将自定义对象序列化到磁盘上,否则这些对象会花费太多时间来聚合创建。
使用内置的 Yaml 和/或 Marshal。
Yaml 可以很好地序列化为看似健康的文本文件,但在尝试反序列化时会产生以下错误:
但是,即使尝试通过 Marshal 错误保存到二进制文件:
最后故意不做$browser.close
,我可以选择让这个 TCPServer 在我的 Ruby 脚本生命周期之后保持活跃和运行。
关于我如何摆脱这个的任何想法?我保证在成功重新加载后会仔细检查任何套接字/内部对象的有效性,并在必要时简单地重新初始化一个全新的对象。
ruby-on-rails-3 - YAML.load 在 Rails 初始化程序中永远不会返回
我试图在我的 Rails 3.1 应用程序初始化期间加载一个 yaml 配置文件,并且对 YAML.load 的调用永远不会返回。这是我的初始化文件:
这是我的 stripe.yml 文件:
无论出于何种原因,YAML.load
调用永远不会返回。如果我执行堆栈跟踪,它似乎卡在 syck.rb 第 135 行。有趣的是,我让我的应用程序在中断前停留的时间越长,对第 135 行的调用就越多。
我也尝试过明确地使用 Psych 而不是使用 Syck,但没有运气。(它最终也挂了。)
ruby-on-rails - 使用 ./script/delayed_job -n 在多个队列中运行延迟作业时出现“未定义方法”错误
在多个队列中运行延迟作业时遇到问题。一开始我在一个队列中运行时遇到了同样的问题
但通过运行解决了它
现在为了运行不同的队列,我正在使用: ./script/delayed_job -n 2 start
然后回到错误开始。错误是:
“Syck::DomainType#{method_name} 失败并出现 NoMethodError:未定义的方法 `{method_name}' for #
我试图通过按照此处的建议将代码添加到 application.rb 来解决它:
但这没有帮助。我正在使用:Rails 3.0.9 Ruby 1.9.2 p290
谢谢:) Moozly。
ruby - syck:需要 ssl:不同的 Ruby 版本?
我正在尝试为铁路宝石运行 rake 任务https://github.com/preston/railroady#readme
在下面的错误消息中,我认为它指的是 Ruby 1.9.1 用于 syck,而我使用的是 Ruby 1.9.3(见下文)。这是正常的吗?
该过程因以下原因而失败:
syck.rb 的相关代码是:
yaml - YAML,delayed_job:Psych 与 Syck。如何让 pysch 读取 ruby 对象的 attr_accessors
我在使用带 ruby 1.9.3 的延迟作业(3.0.3)时遇到问题。以前我们使用的是 ruby 1.8.7,它带有 yaml syck 解析器,它读取为 ruby 对象(包括 attr_accessors)设置的所有属性,但升级到 1.9.3 后,yaml 解析器切换到 psych(重新写的)并且它不考虑除了数据库中持久化的属性之外的任何属性。我们怎样才能让心理也考虑到 attr_accessors。我试图通过以下方式切换到 syck:
但还是不行。
有没有人可以解决这个问题?