class Slipcover::DesignDocument
Attributes
database_name[R]
view_dir[R]
Public Class Methods
new(database_name, view_dir=nil)
click to toggle source
# File lib/slipcover/design_document.rb, line 5 def initialize(database_name, view_dir=nil) @database_name = database_name @view_dir = view_dir || Slipcover::Config.view_dir end
Public Instance Methods
[](key)
click to toggle source
# File lib/slipcover/design_document.rb, line 40 def [](key) document[:views][key] end
document()
click to toggle source
# File lib/slipcover/design_document.rb, line 10 def document @document ||= DesignSpecificDocument.new(database_name, { id: document_id, language: 'javascript', views: views }) end
document_id()
click to toggle source
# File lib/slipcover/design_document.rb, line 36 def document_id "_design/#{Slipcover::Config.design_version_value}" end
fetch()
click to toggle source
# File lib/slipcover/design_document.rb, line 21 def fetch document.fetch document.attributes[:views].symbolize_keys! document.attributes[:views].each {|key, hash| document.attributes[:views][key] = hash.symbolize_keys!} document end
save()
click to toggle source
# File lib/slipcover/design_document.rb, line 28 def save document.save rescue HttpAdapter::ConflictError document.fetch document[:views] = views document.save end
views()
click to toggle source
# File lib/slipcover/design_document.rb, line 44 def views Dir.entries(view_dir).inject({}) do |hash, path| if !path.match(/\./) dir = view_dir.to_s + "/" + path hash[path.to_sym] ||= {} hash[path.to_sym][:map] = File.read(dir + "/map.js") hash[path.to_sym][:reduce] = File.read(dir + "/reduce.js") if File.exist?(dir + "/reduce.js") end hash end end