问题标签 [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.

0 投票
2 回答
1483 浏览

ruby-on-rails - 畸形字符串的 YAML 编码,模型序列化问题

我已经隔离了 Ruby on Rails 的一个问题,其中带有序列化列的模型无法正确加载已保存到其中的数据。

进去的是一个 Hash,出来的是一个 YAML 字符串,由于格式问题无法解析。我希望序列化程序可以正确存储和检索您提供的任何内容,因此似乎出现了问题。

有问题的麻烦字符串的格式如下:

换行、缩进的第二行和不缩进的第三行的组合会导致解析器失败。省略空行或缩进似乎可以解决问题,但这似乎是序列化过程中的一个错误。由于它需要一组相当独特的情况,我敢打赌这是一些没有得到妥善处理的奇怪边缘情况。

Ruby 附带并由 Rails 使用的 YAML 模块看起来将大部分处理委托给 Syck,但确实为 Syck 提供了一些关于如何编码它正在发送的数据的提示。

在 yaml/rubytypes.rb 中有 String#to_yaml 定义:

似乎有一个检查以 ':' 开头的字符串,并且在反序列化时可能会被混淆为符号,并且 :quote2 选项应该指示在编码过程中引用它。调整此正则表达式以捕获上述条件似乎对输出没有任何影响,因此我希望更熟悉 YAML 实现的人可以提出建议。

0 投票
2 回答
975 浏览

ruby-on-rails - ActiveRecords 未正确序列化为 yaml

当我序列化活动记录时,我发现 yaml 格式因我运行的机器而异。在一个盒子上,我得到:

代替

第一个版本是一个问题,因为当 yaml 被反序列化时,主动支持需要做一些魔法来正确填充活动记录。是什么导致了这种差异,我如何确保使用第二种格式?


我正在使用 ruby​​ 1.9.2 并且我已经强制 yaml 引擎使用 syck 使用

在 boot.rb(rails 应用程序)中。

更新

进一步挖掘后,我发现 ActiveRecord 类型没有在 yaml 中注册。在它工作的服务器上进行以下调用:

包括:

行为不正确的服务器缺少此类型。现在的问题是我不知道为什么没有注册该类型。

0 投票
1 回答
740 浏览

ruby-on-rails - 使用 YAML 的 JRuby

当我将 Rails 与 YAML 一起使用时,我将 boot.rb 更改为

它适用于普通的 Ruby。

当我将应用程序从 Ruby 转移到 JRuby 时,它不起作用。

我应该在 JRuby 中哪里写这些行?

0 投票
1 回答
1685 浏览

ruby - 如何在 1.9 中使用 Syck 在 JRuby 中执行 YAML?

如果我在 Ruby 1.9 模式下运行 JRuby,并告诉它使用 Syck 而不是 Psych,似乎没有任何效果。我错过了什么吗?

背景:我正在尝试使用 Syck,因为我在如何反序列化 Psych 中的类?

0 投票
2 回答
2914 浏览

ruby - 为什么 YAML 解析器(syck 和 psych)的行为不同?

看这个案例:

ruby 1.9.2p0(2010-08-18 修订版 29036)[i686-linux]

当我使用 psych 解析器并且我需要格式化一个模糊地类似于日期的字符串时,它会引发异常,因为他认为这是一个日期字符串。使用 syck 不会出现此问题。

有人知道吗?

0 投票
0 回答
203 浏览

ruby - 如何在内部使用 TCPServer 序列化对象?

为了加快链中特定脚本的频繁重复运行,我开始将自定义对象序列化到磁盘上,否则这些对象会花费太多时间来聚合创建。

使用内置的 Yaml 和/或 Marshal。

Yaml 可以很好地序列化为看似健康的文本文件,但在尝试反序列化时会产生以下错误:

但是,即使尝试通过 Marshal 错误保存到二进制文件:

最后故意不做$browser.close,我可以选择让这个 TCPServer 在我的 Ruby 脚本生命周期之后保持活跃和运行。

关于我如何摆脱这个的任何想法?我保证在成功重新加载后会仔细检查任何套接字/内部对象的有效性,并在必要时简单地重新初始化一个全新的对象。

0 投票
2 回答
1860 浏览

ruby-on-rails-3 - YAML.load 在 Rails 初始化程序中永远不会返回

我试图在我的 Rails 3.1 应用程序初始化期间加载一个 yaml 配置文件,并且对 YAML.load 的调用永远不会返回。这是我的初始化文件:

这是我的 stripe.yml 文件:

无论出于何种原因,YAML.load调用永远不会返回。如果我执行堆栈跟踪,它似乎卡在 syck.rb 第 135 行。有趣的是,我让我的应用程序在中断前停留的时间越长,对第 135 行的调用就越多。

我也尝试过明确地使用 Psych 而不是使用 Syck,但没有运气。(它最终也挂了。)

0 投票
1 回答
574 浏览

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。

0 投票
1 回答
136 浏览

ruby - syck:需要 ssl:不同的 Ruby 版本?

我正在尝试为铁路宝石运行 rake 任务https://github.com/preston/railroady#readme

在下面的错误消息中,我认为它指的是 Ruby 1.9.1 用于 syck,而我使用的是 Ruby 1.9.3(见下文)。这是正常的吗?

该过程因以下原因而失败:

syck.rb 的相关代码是:

0 投票
2 回答
1331 浏览

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:

但还是不行。

有没有人可以解决这个问题?