Skip to content

Commit

Permalink
Merge pull request collectiveidea#454 from tpitale/master
Browse files Browse the repository at this point in the history
Changes to psych_ext to support data_mapper YAML deserialization
  • Loading branch information
sferik committed Nov 23, 2012
2 parents 8425742 + 265968a commit 6304669
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions lib/delayed/psych_ext.rb
Expand Up @@ -111,6 +111,16 @@ def visit_Psych_Nodes_Mapping_with_class(object)
rescue Mongoid::Errors::DocumentNotFound
raise Delayed::DeserializationError
end
when /^!ruby\/DataMapper:(.+)$/
klass = resolve_class($1)
payload = Hash[*object.children.map { |c| accept c }]
begin
primary_keys = klass.properties.select { |p| p.key? }
key_names = primary_keys.map { |p| p.name.to_s }
klass.get!(*key_names.map { |k| payload["attributes"][k] })
rescue DataMapper::ObjectNotFoundError
raise Delayed::DeserializationError
end
else
visit_Psych_Nodes_Mapping_without_class(object)
end
Expand Down

0 comments on commit 6304669

Please sign in to comment.