Document
Check if the view has a reduce method defined.
# File lib/couchrest/design.rb, line 80 def can_reduce_view?(name) has_view?(name) && !self['views'][name.to_s]['reduce'].to_s.empty? end
Returns true or false if the view is available.
# File lib/couchrest/design.rb, line 75 def has_view?(name) !self['views'][name.to_s].nil? end
# File lib/couchrest/design.rb, line 55 def name id.sub('_design/','') if id end
# File lib/couchrest/design.rb, line 59 def name= newname self['_id'] = "_design/#{newname}" end
# File lib/couchrest/design.rb, line 63 def save raise ArgumentError, "_design docs require a name" unless name && name.length > 0 super end
Dispatches to any named view. (using the database where this design doc was saved)
# File lib/couchrest/design.rb, line 38 def view view_name, query={}, &block view_on database, view_name, query, &block end
# File lib/couchrest/design.rb, line 4 def view_by *keys opts = keys.pop if keys.last.is_a?(Hash) opts ||= {} self['views'] ||= {} method_name = "by_#{keys.join('_and_')}" if opts[:map] view = {} view['map'] = opts.delete(:map) view['reduce'] = opts.delete(:reduce) if opts[:reduce] self['views'][method_name] = view else doc_keys = keys.collect{|k| "doc['#{k}']"} key_emit = doc_keys.length == 1 ? "#{doc_keys.first}" : "[#{doc_keys.join(', ')}]" guards = opts.delete(:guards) || [] guards += doc_keys.map{|k| "(#{k} != null)"} unless opts.delete(:allow_nil) guards << 'true' if guards.empty? map_function = function(doc) { if (#{guards.join(' && ')}) { emit(#{key_emit}, null); }} self['views'][method_name] = { 'map' => map_function } end self['views'][method_name]['couchrest-defaults'] = opts unless opts.empty? method_name end
Return the hash of default values to include in all queries sent to a view from couchrest.
# File lib/couchrest/design.rb, line 70 def view_defaults(name) (self['views'][name.to_s] && self['views'][name.to_s]["couchrest-defaults"]) || {} end
Dispatches to any named view in a specific database
# File lib/couchrest/design.rb, line 43 def view_on db, view_name, query = {}, &block raise ArgumentError, "View query options must be set as symbols!" if query.keys.find{|k| k.is_a?(String)} view_name = view_name.to_s view_slug = "#{name}/#{view_name}" # Set the default query options query = view_defaults(view_name).merge(query) # Ensure reduce is set if dealing with a reduceable view # This is a requirement of CouchDB. query[:reduce] ||= false if can_reduce_view?(view_name) db.view(view_slug, query, &block) end
Generated with the Darkfish Rdoc Generator 2.