Class: Slipcover::DesignDocument
- Inherits:
-
Object
- Object
- Slipcover::DesignDocument
show all
- Defined in:
- lib/slipcover/design_document.rb
Defined Under Namespace
Classes: DesignSpecificDocument
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(database_name, view_dir = nil) ⇒ DesignDocument
Returns a new instance of DesignDocument.
5
6
7
8
|
# 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
|
Instance Attribute Details
#database_name ⇒ Object
Returns the value of attribute database_name.
3
4
5
|
# File 'lib/slipcover/design_document.rb', line 3
def database_name
@database_name
end
|
#view_dir ⇒ Object
Returns the value of attribute view_dir.
3
4
5
|
# File 'lib/slipcover/design_document.rb', line 3
def view_dir
@view_dir
end
|
Instance Method Details
#[](key) ⇒ Object
40
41
42
|
# File 'lib/slipcover/design_document.rb', line 40
def [](key)
document[:views][key]
end
|
#document ⇒ Object
10
11
12
13
14
15
16
|
# File 'lib/slipcover/design_document.rb', line 10
def document
@document ||= DesignSpecificDocument.new(database_name, {
id: document_id,
language: 'javascript',
views: views
})
end
|
#fetch ⇒ Object
21
22
23
24
25
26
|
# 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 ⇒ Object
28
29
30
31
32
33
34
|
# File 'lib/slipcover/design_document.rb', line 28
def save
document.save
rescue HttpAdapter::ConflictError
document.fetch
document[:views] = views
document.save
end
|
#views ⇒ Object
44
45
46
47
48
49
50
51
52
53
54
|
# 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
|