class NebulousStomp::RedisHelper

A class to help out users who want to talk to Redis themselves; the “Redis use case”.

redis = NebulousStomp::RedisHelper.new

redis.set(:thing, "thingy")
redes.set(:gone_in_30_seconds, "thingy", 30)

value = redis.get(:thing)

redis.del(:thing)

Attributes

redis_handler[W]

For testing only

Public Class Methods

new → (helper) click to toggle source
# File lib/nebulous_stomp/redis_helper.rb, line 30
def initialize
  @param_hash = Param.get(:redisConnectHash)

  fail NebulousError, "NebulousStomp.init has not been called or Redis not configured" \
    if @param_hash.nil? || @param_hash.empty?

end

Public Instance Methods

del(key) click to toggle source

Remove a value from the store. Raise an exception if there is none.

# File lib/nebulous_stomp/redis_helper.rb, line 77
def del(key)
  ensure_connected
  num = redis_handler.del(key.to_s)
  fail ArgumentError, "Unknown key, cannot delete" if num == 0
end
get(key) → value click to toggle source

Get a string value from the store. Return nil if there is none.

# File lib/nebulous_stomp/redis_helper.rb, line 66
def get(key)
  ensure_connected
  json_to_value(redis_handler.get key.to_s)
end
set(key, value) click to toggle source
set(key, value, timeout)

Set a value in the store.

# File lib/nebulous_stomp/redis_helper.rb, line 45
def set(key, value, timeout=nil)
  rtimeout = (Integer(timeout.to_s, 10) rescue nil)
  rvalue   = value_to_json(value)
  fail ArgumentError, "Timeout must be a number" if timeout && rtimeout.nil?
  ensure_connected

  if timeout
    redis_handler.set(key.to_s, rvalue, ex: rtimeout)
  else
    redis_handler.set(key.to_s, rvalue)
  end

  self
end

Private Instance Methods

ensure_connected() click to toggle source
# File lib/nebulous_stomp/redis_helper.rb, line 89
def ensure_connected
  redis_handler.connect unless redis_handler.connected?
end
json_to_value(json) click to toggle source
# File lib/nebulous_stomp/redis_helper.rb, line 97
def json_to_value(json)
  return nil if json.nil?
  hash = JSON.parse(json, symbolize_names: true)

  hash.is_a?(Hash) ? hash[:value] : nil
rescue JSON::ParserError
  return nil
end
redis_handler() click to toggle source
# File lib/nebulous_stomp/redis_helper.rb, line 85
def redis_handler
  @redis_handler ||= RedisHandler.new(Param.get :redisConnectHash)
end
value_to_json(value) click to toggle source
# File lib/nebulous_stomp/redis_helper.rb, line 93
def value_to_json(value)
  { value: value}.to_json
end