Class: Relaxo::Session
- Inherits:
-
Object
- Object
- Relaxo::Session
- Defined in:
- lib/relaxo/session.rb,
lib/relaxo/database.rb
Instance Method Summary collapse
- #abort! ⇒ Object
- #commit! ⇒ Object
- #delete(document) ⇒ Object
- #get(*args) ⇒ Object
-
#initialize(database) ⇒ Session
constructor
A new instance of Session.
- #save(document) ⇒ Object
- #session(klass) {|_self| ... } ⇒ Object
- #view(*args) ⇒ Object
Constructor Details
#initialize(database) ⇒ Session
Returns a new instance of Session.
46 47 48 49 50 51 |
# File 'lib/relaxo/session.rb', line 46 def initialize(database) @database = database @documents = [] @uuids = [] end |
Instance Method Details
#abort! ⇒ Object
108 109 110 |
# File 'lib/relaxo/session.rb', line 108 def abort! throw :abort end |
#commit! ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/relaxo/session.rb', line 82 def commit! #puts "Commiting session:" #puts YAML::dump(@documents) changed = [] unless @documents.empty? results = @database.bulk_save @documents # Update the documents with revision information: @documents.each_with_index do |document, index| status = results[index] if status['ok'] document[ID] = status['id'] document[REV] = status['rev'] end end changed = @documents @documents = [] end return changed end |
#delete(document) ⇒ Object
57 58 59 |
# File 'lib/relaxo/session.rb', line 57 def delete(document) @documents << {:_deleted => true}.merge(document) end |
#get(*args) ⇒ Object
53 54 55 |
# File 'lib/relaxo/session.rb', line 53 def get(*args) @database.get(*args) end |
#save(document) ⇒ Object
61 62 63 64 65 66 67 68 69 70 |
# File 'lib/relaxo/session.rb', line 61 def save(document) Relaxo::(document) @documents << document # We assume the save operation will be successful: unless document.key? ID @uuids << (document[ID] = @database.connection.next_uuid) end end |
#session(klass) {|_self| ... } ⇒ Object
72 73 74 75 76 |
# File 'lib/relaxo/session.rb', line 72 def session(klass) yield self klass.new(self, @documents.last) end |
#view(*args) ⇒ Object
78 79 80 |
# File 'lib/relaxo/session.rb', line 78 def view(*args) @database.view(*args) end |