An EventMachine interface to the HyperDex NoSQL data store.
Installation
It's a gem:
gem install em-hyperdex-client
If you're the sturdy type that likes to run from git:
rake build; gem install pkg/em-hyperdex-client-<whatever>.gem
Or, if you've eschewed the convenience of Rubygems, then you presumably know what to do already.
Usage
To use any of these methods, you will want to add the following require:
require 'em-hyperdex-client'
Somewhere inside your EM.run
block, create a client object:
c = EM::HyperDex::Client.new('localhost', 1982)
Then, call any (synchronous) method you normally would on a regular
HyperDex::Client::Client
instance, but instead of having the result
returned to you, you use #callback
to handle the response:
c.get(:kv, "foo").callback do |r|
puts "The value of foo is #{r}"
end
To specify the proper order of operations, you need to nest your callbacks:
c.get(:kv, "foo").callback do |r|
c.put(:kv, "foo", r.merge(:baz => "wombat")).callback do
c.get(:kv, "bar").callback do |r|
puts "Ohai!"
end
end
end
To handle errors, you specify an #errback
callback:
c.get(:kv, "foo").callback do |r|
c.put(:kv, "foo", r.merge(:baz => "wombat")).callback do
puts "Completed successfully"
end.errback do |ex|
puts "Error on put: #{ex.message}"
end
end.errback do |ex|
puts "Error on get: #{ex.message}"
end
What gets yielded to your #errback
block is the same exception that would
otherwise have been raised by the operation you performed -- typically,
that'll be a HyperDex::Client::HyperDexClientException
.
Contributing
Bug reports should be sent to the Github issue tracker, or e-mailed. Patches can be sent as a Github pull request, or e-mailed.