Когда я сериализую активные записи, я обнаруживаю, что формат yaml отличается в зависимости от того, на каком ящике я работаю. На одной коробке я получаю:
object: !ruby/object:User
вместо
object: !ruby/ActiveRecord:User
Первая версия - это проблема, потому что активная поддержка должна сделать что-то волшебное, чтобы правильно заполнить активную запись, когда десмеризация yaml. В чем причина этой разницы и как я могу убедиться, что используется второй формат?
Я использую ruby 1.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"
Этот тип отсутствует на сервере, который ведет себя некорректно. Проблема в том, что я понятия не имею, почему тип не зарегистрирован.