Finalizing support for including hash codes in Design documents

This commit is contained in:
Sam Lown 2011-04-14 00:19:10 +02:00
parent 706880fceb
commit 00a4cc7f3b
7 changed files with 25 additions and 94 deletions

View file

@ -391,11 +391,9 @@ module CouchRest
return self.result if result
raise "Database must be defined in model or view!" if use_database.nil?
# Remove the reduce value if its not needed
# Remove the reduce value if its not needed to prevent CouchDB errors
query.delete(:reduce) unless can_reduce?
# Save the design doc for the current database. This should be efficient
# and check for changes
model.save_design_doc(use_database)
self.result = model.design_doc.view_on(use_database, name, query.reject{|k,v| v.nil?})

View file

@ -15,8 +15,16 @@ CouchRest::Design.class_eval do
base.delete('_rev')
result = nil
flatten =
lambda {|v|
v.is_a?(Hash) ? v.flatten.map{|v| flatten.call(v)}.flatten : v.to_s
lambda {|r|
(recurse = lambda {|v|
if v.is_a?(Hash)
v.to_a.map{|v| recurse.call(v)}.flatten
elsif v.is_a?(Array)
v.flatten.map{|v| recurse.call(v)}
else
v.to_s
end
}).call(r)
}
Digest::MD5.hexdigest(flatten.call(base).sort.join(''))
end