12

我在我的 rails 项目的 capistrano 部署期间收到此消息:

syck has been removed, psych is used instead

版本:

gem 'rails', '=3.2.13'
ruby 2.0.0p247

据我所知,ruby 使用本地 yamler“Psych”。

Gemfile 中没有任何 yamler。

在我的 boot.rb 中:

require 'yaml'
YAML::ENGINE.yamler = 'psych'

可能是什么问题呢?

4

1 回答 1

14

这可能意味着 yamler 被分配到某处的 gem 中。您可以在此处查看消息是如何生成的:https ://github.com/ruby/ruby/blob/8a896179ada36b4fc0f50d75500c801a3097924a/lib/yaml.rb

如果调用 yamler = 'syck',则会产生警告。

我搜索了我的 gem,发现我有一个旧版本的 newrelic_rpm,它有以下导致问题的行: YAML::ENGINE.yamler = 'syck' if defined?(YAML::ENGINE)

更新 newrelic gem 为我解决了这个问题。祝你好运。

于 2013-10-18T14:08:22.403 回答