Gem представимый обеспечивает это в удобном стиле ООП.
Учитывая, что у вас есть модель Пользователь:
user.name => "Andrew"
user.age => "over 18"
Теперь вы бы задали модуль представления для рендеринга / анализа пользовательских экземпляров.
require 'representable/yaml'
module UserRepresenter
include Representable::YAML
collection :hash, :style => :flow
def hash
[name, age]
end
end
После определения документа YAML вы просто расширяете пользовательский экземпляр и отображаете его.
user.extend(UserRepresenter).to_yaml
#=> ---
hash: [Andrew, over 18]
Надеюсь, это поможет, Эндрю!