class PikoMongoStore::Safe

Public Class Methods

new(db) click to toggle source
# File lib/piko_mongo_store/safe.rb, line 26
def initialize(db)
  @db = db
end

Public Instance Methods

execute(success_action = nil) { |db| ... } click to toggle source
# File lib/piko_mongo_store/safe.rb, line 30
def execute(success_action = nil)
  logger.debug { format "Performing safe action in DB" }
  handle_result yield(@db), success_action
rescue Mongo::Error => e
  logger.error { format "%s - %s", e.class.name, e.message }
  false
end

Private Instance Methods

handle_result(result, success_action) click to toggle source
# File lib/piko_mongo_store/safe.rb, line 40
def handle_result(result, success_action)
  logger.debug { format "DB result: %s", result.inspect }
  return result.ok? if mongo_operation?(result)
  result = {} if result.nil?
  success_action.call(result) if success_action.is_a?(Proc)
  true
end
mongo_operation?(result) click to toggle source
# File lib/piko_mongo_store/safe.rb, line 48
def mongo_operation?(result)
  result.is_a?(Mongo::Operation::Result)
end