Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
71 lines (49 sloc) 2.08 KB


Mongo adapter for adapter gem.

require 'adapter/mongo'

key     =
client  ='adapter')['testing']
adapter = Adapter[:mongo].new(client)

adapter.write(key, {'some' => 'thing'})
puts 'Should be {"some" => "thing"}: ' +

puts 'Should be nil: ' +

adapter.write(key, {'some' => 'thing'})
puts 'Should be nil: ' +

puts 'Should be {"some" => "thing"}: ' + adapter.fetch(key, {'some' => 'thing'}).inspect


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 shown with a bit of code.

require 'adapter/mongo_atomic'

key            =
full_doc       = {'a' => 'c', 'b' => 'd'}
partial_doc    = {'a' => 'z'}
client         ='adapter')['testing']
adapter        = Adapter[:mongo].new(client)
atomic_adapter = Adapter[:mongo_atomic].new(client)


adapter.write(key, full_doc)
adapter.write(key, partial_doc)

doc =

# 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 =

# 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.


  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so we don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine, but bump version in a commit by itself so we can ignore when we pull)
  • Send us a pull request. Bonus points for topic branches.
Something went wrong with that request. Please try again.