Permalink
Browse files

Added flavors section to readme.

  • Loading branch information...
jnunemaker committed Jun 25, 2012
1 parent f337b76 commit ca2efae10fe26a522421e68cf9922ec773e9a3e2
Showing with 36 additions and 0 deletions.
  1. +36 −0 README.md
View
@@ -22,6 +22,42 @@ puts 'Should be nil: ' + adapter.read('foo').inspect
puts 'Should be bar: ' + adapter.fetch('foo', 'bar')
```
+## Flavors
+
+There are two adapters included with this gem -- `:mongo` and `:mongo_atomic`. `:mongo` assumes that you are writing the full document each time. `:mongo_atomic` allows for partially updating documents. The difference is best show with a bit of code if you are unfamiliar.
+
+```ruby
+require 'adapter/mongo_atomic'
+
+key = BSON::ObjectId.new
+full_doc = {'a' => 'c', 'b' => 'd'}
+partial_doc = {'a' => 'z'}
+client = Mongo::Connection.new.db('adapter')['testing']
+adapter = Adapter[:mongo].new(client)
+atomic_adapter = Adapter[:mongo_atomic].new(client)
+
+adapter.clear
+atomic_adapter.clear
+
+adapter.write(key, full_doc)
+adapter.write(key, partial_doc)
+
+doc = adapter.read(key)
+doc.delete('_id')
+
+# full doc must always be written with :mongo adapter
+puts 'Should be {"a"=>"z"}: ' + doc.inspect
+
+atomic_adapter.write(key, full_doc)
+atomic_adapter.write(key, partial_doc)
+
+doc = atomic_adapter.read(key)
+doc.delete('_id')
+
+# partial updates can be written with atomic adapter as $set is used
+puts 'Should be {"a"=>"z", "b"=>"d"}: ' + doc.inspect
+```
+
See examples/ or specs/ for more usage.
## Contributing

0 comments on commit ca2efae

Please sign in to comment.