Вы, кажется, нашли достаточный ответ, но я подумал, что смогу использовать универсальный Ruby-способ.
# outside of rails you'll need this
require 'base64'
# encode
h = { :first => "John", :age => 23 }
encoded = Base64.encode64(Marshal.dump(h))
# decode
h = Marshal.load(Base64.decode64(encoded))
Я использую это для сериализации объектов Ruby (например, через JSON и в БД), и вы обнаружите, что сеансы cookie в Rails кодируют хэш сеанса таким же образом. С помощью этого часто удобно отлаживать содержимое сеанса из файла cookie браузера.