アクティブなレコードをシリアル化すると、実行しているボックスによってyamlの形式が異なることがわかります。1つの箱で私は得る:
object: !ruby/object:User
それ以外の
object: !ruby/ActiveRecord:User
最初のバージョンは問題です。yamlが逆シリアル化されたときにアクティブサポートがアクティブレコードを正しく入力するために何らかの魔法をかける必要があるためです。この違いの原因と、2番目の形式が使用されていることを確認するにはどうすればよいですか?
私はruby1.9.2を使用しており、yamlエンジンにsyckを使用するように強制しました
require "yaml"
YAML::ENGINE.yamler = "syck"
boot.rb(railsアプリ)で。
アップデート
もう少し掘り下げてみると、ActiveRecordタイプがyamlに登録されていないことがわかりました。それが機能するサーバーで、次の呼び出しを行います。
YAML.resolver.tags.keys
含まれるもの:
"tag:ruby.yaml.org,2002:ActiveRecord"
このタイプは、正しく動作していないサーバーから欠落しています。問題は、タイプが登録されていない理由がわからないことです。