lib/moneta/adapters/tokyotyrant.rb in moneta-0.8.0 vs lib/moneta/adapters/tokyotyrant.rb in moneta-0.8.1

- old
+ new

@@ -12,10 +12,13 @@ # @api public class TokyoTyrant include Defaults include HashAdapter + # error code: no record found + ENOREC = 7 + supports :create, :increment attr_reader :backend # @param [Hash] options # @option options [String] :host ('127.0.0.1') Server host name @@ -27,11 +30,11 @@ if options[:backend] @backend = options[:backend] elsif defined?(::TokyoTyrant::RDB) # Use ruby client @backend = ::TokyoTyrant::RDB.new - @backend.open(options[:host], options[:port]) or raise @backend.errmsg(@backend.ecode) + @backend.open(options[:host], options[:port]) or error else # Use native client @backend = ::TokyoTyrant::DB.new(options[:host], options[:port]) end @native = @backend.class.name != 'TokyoTyrant::RDB' @@ -42,31 +45,33 @@ end # (see Proxy#load) def load(key, options = {}) value = @backend[key] + # raise if there is an error and the error is not "no record" + error if value.nil? && @backend.ecode != ENOREC value && unpack(value) end # (see Proxy#store) def store(key, value, options = {}) - @backend[key] = pack(value) + @backend.put(key, pack(value)) or error value end # (see Proxy#delete) def delete(key, options = {}) value = load(key, options) if value - @backend.delete(key) + @backend.delete(key) or error value end end # (see Proxy#increment) def increment(key, amount = 1, options = {}) - @backend.addint(key, amount) || raise('Tried to increment non integer value') + @backend.addint(key, amount) or error end # (see Proxy#create) def create(key, value, options = {}) if @native @@ -110,9 +115,13 @@ # Remove nul character value[0..-2] else value end + end + + def error + raise "#{@backend.class.name} error: #{@backend.errmsg}" end end end end