class Rk::Rk
Build Redis keys of several elements.
rk("user", 10) => "user:10"
Attributes
keys[RW]
prefix[RW]
separator[RW]
suffix[RW]
Public Class Methods
new()
click to toggle source
Set defaults
-
separator
- : -
prefix
- empty -
suffix
- empty -
keys
- empty
# File lib/rk.rb, line 14 def initialize @separator = ":" @prefix = "" @suffix = "" @keys = {} end
Public Instance Methods
keys=(h)
click to toggle source
Define key elements by key/value pairs of a hash, symbols and strings allowed for keys/values.
rk.keys = { user: "user", "statistics" => "stats", "session" => :sess }
# File lib/rk.rb, line 52 def keys=(h) # Allow hash only raise TypeError, "invalid type" unless h.is_a?(Hash) # Call rk.<key> = <val> for each pair of hash h.each_pair do |key, val| self.send("#{key}=", val) end end
method_missing(method, *arg)
click to toggle source
Add methods dynamically to define/access elements.
rk.user = "user" rk(rk.user, 10) => "user:10"
# File lib/rk.rb, line 29 def method_missing(method, *arg) # Raise an error if a method gets accessed which was not defined before raise RuntimeError, "'rk.#{method.to_s}' is undefined" unless method.to_s.include?("=") # Define a method to return a value as set, for example rk.settings = 'set' defines # a method called "settings" which returns the string "set" key = method.to_s.sub(/=/, "") val = (arg || []).first instance_eval(%Q[ def #{key} "#{val}" end ]) # Store user-defined key @keys[key] = val end
rk(*elements)
click to toggle source
Build a string including prefix/suffix, joining all elements with the separator.
# File lib/rk.rb, line 22 def rk(*elements) ([@prefix] + elements + [@suffix]).reject { |element| element.to_s.empty? }.join(@separator) end