Сериализованный хэш Ruby 1.9.3 и Rails 3.2.2 не может быть десериализован

По сути, я обновил приложение 1.8.7@rails2 до [email protected].

При попытке использовать .each_pair для сериализованного хэша я получаю

syntax error, unexpected ',', expecting keyword_end
       @measure.coefficients.each_pair |key, value|

При попытке получить доступ к консоли рельсов, чтобы загрузить этот measure.coefficients, он дает мне строку. Что, если я попытаюсь запустить YAML.load(serialized_string) либо в «psych», либо в «syck», как указано в следующем ответе rails ошибка, не удалось разобрать YAML

я получаю

ArgumentError: syntax error on line 21, col 5: `'
from /Users/user/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/syck.rb:135:in `load'

Аналогичный результат при использовании «психического» движка. Любая подсказка?

Вот пример хеша в строковом формате:

"--- !map:HashWithIndifferentAccess \n\"1092\": \"\"\n\"869\": \"\"\n\"1039\": \"\"\n\"2492\": \"\"\n\"1389\": \"\"\n\"1200\": \"\"\n\"600\": \"\"\n\"1928\": \"\"\n\"1767\": \"\"\n\"1498\": \"\"\n\"899\": \"\"\n\"711\": \"\"\n\"1124\": \"\"\n\"1312\": \"\"\n\"1500\": \"\"\n\"900\": \"\"\n\"1152\": \"\"\n\"1232\": \"\"\n\"1340\": \"\"\n\"1420\": \"\"\n\"123"

person Jerry Deng    schedule 21.05.2012    source источник


Ответы (1)


Когда вы фактически печатаете значение, оно дает:

--- !map:HashWithIndifferentAccess 
"1092": ""
"869": ""
"1039": ""
"2492": ""
"1389": ""
"1200": ""
"600": ""
"1928": ""
"1767": ""
"1498": ""
"899": ""
"711": ""
"1124": ""
"1312": ""
"1500": ""
"900": ""
"1152": ""
"1232": ""
"1340": ""
"1420": ""
"123

Что явно недопустимо для YAML, так как заканчивается незавершенной строкой.

person Jakub Hampl    schedule 21.05.2012
comment
В основном он был усечен по какой-то причине, вероятно, исчерпал длину строки 255, некоторые другие хэши в таблице были сохранены и могли быть десериализованы, поэтому я уверен, что это длина. - person Jerry Deng; 22.05.2012