class Slipcover::Document
Attributes
attributes[RW]
database_name[R]
id[RW]
rev[RW]
Public Class Methods
new(database_name, attributes={})
click to toggle source
# File lib/slipcover/document.rb, line 6 def initialize(database_name, attributes={}) @database_name = database_name self.attributes = attributes.symbolize_keys set_intrinsic_values end
Public Instance Methods
database()
click to toggle source
# File lib/slipcover/document.rb, line 48 def database @database ||= Slipcover::Database.new(database_name) end
delete()
click to toggle source
# File lib/slipcover/document.rb, line 34 def delete http_adapter.delete("#{url}?rev=#{rev}") set_intrinsic_values({}) nullify_intrinsic_attributes true rescue Exception => e false end
fetch()
click to toggle source
# File lib/slipcover/document.rb, line 28 def fetch self.attributes = get(url) set_intrinsic_values rescue Slipcover::HttpAdapter::DocumentNotFound end
http_adapter()
click to toggle source
# File lib/slipcover/document.rb, line 14 def http_adapter @http_adapter ||= HttpAdapter.new end
save()
click to toggle source
# File lib/slipcover/document.rb, line 21 def save http_method = id ? :put : :post doc_url = id ? url : database.url response = send(http_method, doc_url, attributes_for_save) set_intrinsic_values(response) end
url()
click to toggle source
# File lib/slipcover/document.rb, line 43 def url raise ArgumentError.new('no document id') unless id "#{database.url}/#{CGI::escape(id)}" end
Private Instance Methods
attributes_for_save()
click to toggle source
# File lib/slipcover/document.rb, line 54 def attributes_for_save attrs = attributes.clone attrs[:_rev] = rev if rev attrs[:_id] = id if id attrs end
nullify_intrinsic_attributes()
click to toggle source
# File lib/slipcover/document.rb, line 67 def nullify_intrinsic_attributes attributes[:_id] = nil attributes[:id] = nil attributes[:_rev] = nil attributes[:rev] = nil end
set_intrinsic_values(attrs=nil)
click to toggle source
# File lib/slipcover/document.rb, line 61 def set_intrinsic_values(attrs=nil) attrs ||= attributes self.id = attrs[:id] || attrs[:_id] self.rev = attrs[:rev] || attrs[:_rev] end