Parent

Files

CouchRest::Design

Public Instance Methods

can_reduce_view?(name) click to toggle source

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
has_view?(name) click to toggle source

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
name() click to toggle source
# File lib/couchrest/design.rb, line 55
def name
  id.sub('_design/','') if id
end
name=(newname) click to toggle source
# File lib/couchrest/design.rb, line 59
def name= newname
  self['_id'] = "_design/#{newname}"
end
save() click to toggle source
# File lib/couchrest/design.rb, line 63
def save
  raise ArgumentError, "_design docs require a name" unless name && name.length > 0
  super
end
view(view_name, query={}) click to toggle source

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
view_by(*keys) click to toggle source
# 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
view_defaults(name) click to toggle source

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
view_on(db, view_name, query = {}) click to toggle source

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

[Validate]

Generated with the Darkfish Rdoc Generator 2.