Module: SimplyCouch::Model::View::CustomViews::ClassMethods

Defined in:
lib/simply_couch/model/view/custom_views.rb

Instance Method Summary collapse

Instance Method Details

#_find_view(view) ⇒ Object



43
44
45
# File 'lib/simply_couch/model/view/custom_views.rb', line 43

def _find_view(view)
  (@views && @views[view]) || (superclass._find_view(view) if superclass.respond_to?(:_find_view))
end

#execute_view(view_name, view_parameters) ⇒ Object



20
21
22
23
24
# File 'lib/simply_couch/model/view/custom_views.rb', line 20

def execute_view(view_name, view_parameters)
  options = views(view_name).dup
  options[:split_design_doc] = split_design_documents? if respond_to?(:split_design_documents?)
  view_spec_class(options[:type]).new(self, view_name, options, view_parameters)
end

#view(view_name, options) ⇒ Object

Declare a CouchDB view, for examples on how to use see the *ViewSpec classes in SimplyCouch::Model::View



27
28
29
30
31
32
# File 'lib/simply_couch/model/view/custom_views.rb', line 27

def view(view_name, options)
  view_name = view_name.to_s
  views[view_name] = options
  method_str = "def #{view_name}(view_parameters = {}); execute_view(\"#{view_name}\", view_parameters); end"
  self.instance_eval(method_str)
end

#view_spec_class(type) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/simply_couch/model/view/custom_views.rb', line 34

def view_spec_class(type)
  if type && type.is_a?(Class)
    type
  else
    name = type.nil? ? 'Model' : type.to_s.camelize
    SimplyCouch::Model::View.const_get("#{name}ViewSpec")
  end
end

#views(view_name = nil) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/simply_couch/model/view/custom_views.rb', line 12

def views(view_name = nil)
  if view_name
    _find_view(view_name)
  else
    @views ||= {}
  end
end