Class: CouchRest::Document
- Includes:
- Mixins::Views
- Defined in:
- lib/couchrest/core/document.rb
Constant Summary collapse
- @@database =
nil
Instance Attribute Summary collapse
-
#database ⇒ Object
Returns the document’s database.
Class Method Summary collapse
- .database ⇒ Object
-
.use_database(db) ⇒ Object
override the CouchRest::Model-wide default_database This is not a thread safe operation, do not change the model database at runtime.
Instance Method Summary collapse
-
#copy(dest) ⇒ Object
copies the document to a new id.
-
#delete_attachment(name) ⇒ Object
deletes an attachment directly from couchdb.
-
#fetch_attachment(name) ⇒ Object
returns an attachment’s data.
- #id ⇒ Object
-
#move(dest) ⇒ Object
moves the document to a new id.
-
#put_attachment(name, file, options = {}) ⇒ Object
saves an attachment directly to couchdb.
- #rev ⇒ Object
-
#uri(append_rev = false) ⇒ Object
Returns the CouchDB uri for the document.
Methods inherited from Response
Constructor Details
This class inherits a constructor from CouchRest::Response
Instance Attribute Details
#database ⇒ Object
Returns the document’s database
72 73 74 |
# File 'lib/couchrest/core/document.rb', line 72 def database @database end |
Class Method Details
.database ⇒ Object
29 30 31 |
# File 'lib/couchrest/core/document.rb', line 29 def self.database @@database end |
.use_database(db) ⇒ Object
override the CouchRest::Model-wide default_database This is not a thread safe operation, do not change the model database at runtime.
25 26 27 |
# File 'lib/couchrest/core/document.rb', line 25 def self.use_database(db) @@database = db end |
Instance Method Details
#copy(dest) ⇒ Object
copies the document to a new id. If the destination id currently exists, a rev must be provided. dest
can take one of two forms if overwriting: “id_to_overwrite?rev=revision” or the actual doc hash with a ‘_rev’ key
44 45 46 47 48 |
# File 'lib/couchrest/core/document.rb', line 44 def copy(dest) raise ArgumentError, "doc.database required to copy" unless database result = database.copy_doc(self, dest) result['ok'] end |
#delete_attachment(name) ⇒ Object
deletes an attachment directly from couchdb
93 94 95 96 97 98 |
# File 'lib/couchrest/core/document.rb', line 93 def (name) raise ArgumentError, "doc.database required to delete_attachment" unless database result = database.(self, name) self['_rev'] = result['rev'] result['ok'] end |
#fetch_attachment(name) ⇒ Object
returns an attachment’s data
86 87 88 89 90 |
# File 'lib/couchrest/core/document.rb', line 86 def (name) raise ArgumentError, "doc must be saved" unless self.rev raise ArgumentError, "doc.database required to put_attachment" unless database database.(self, name) end |
#id ⇒ Object
33 34 35 |
# File 'lib/couchrest/core/document.rb', line 33 def id self['_id'] end |
#move(dest) ⇒ Object
moves the document to a new id. If the destination id currently exists, a rev must be provided. dest
can take one of two forms if overwriting: “id_to_overwrite?rev=revision” or the actual doc hash with a ‘_rev’ key
53 54 55 56 57 |
# File 'lib/couchrest/core/document.rb', line 53 def move(dest) raise ArgumentError, "doc.database required to copy" unless database result = database.move_doc(self, dest) result['ok'] end |
#put_attachment(name, file, options = {}) ⇒ Object
saves an attachment directly to couchdb
77 78 79 80 81 82 83 |
# File 'lib/couchrest/core/document.rb', line 77 def (name, file, ={}) raise ArgumentError, "doc must be saved" unless self.rev raise ArgumentError, "doc.database required to put_attachment" unless database result = database.(self, name, file, ) self['_rev'] = result['rev'] result['ok'] end |
#rev ⇒ Object
37 38 39 |
# File 'lib/couchrest/core/document.rb', line 37 def rev self['_rev'] end |
#uri(append_rev = false) ⇒ Object
Returns the CouchDB uri for the document
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/couchrest/core/document.rb', line 60 def uri(append_rev = false) return nil if new_document? couch_uri = "http://#{database.uri}/#{CGI.escape(id)}" if append_rev == true couch_uri << "?rev=#{rev}" elsif append_rev.kind_of?(Integer) couch_uri << "?rev=#{append_rev}" end couch_uri end |