Sha256: bdd4beaefd45b0b684ea4c5a6df00d28c90ad4365ee74aa3524af380137382fc
Contents?: true
Size: 1.65 KB
Versions: 3
Compression:
Stored size: 1.65 KB
Contents
class Memcached #:stopdoc: def self.load_constants(prefix, hash = {}, offset = 0) Rlibmemcached.constants.grep(/^#{prefix}/).each do |const_name| hash[const_name[prefix.length..-1].downcase.to_sym] = Rlibmemcached.const_get(const_name) + offset end hash end BEHAVIORS = load_constants("MEMCACHED_BEHAVIOR_") BEHAVIOR_VALUES = { false => 0, true => 1 } HASH_VALUES = {} BEHAVIOR_VALUES.merge!(load_constants("MEMCACHED_HASH_", HASH_VALUES, 2)) DISTRIBUTION_VALUES = {} BEHAVIOR_VALUES.merge!(load_constants("MEMCACHED_DISTRIBUTION_", DISTRIBUTION_VALUES, 2)) #:startdoc: private # Set a behavior option for this Memcached instance. Accepts a Symbol <tt>behavior</tt> and either <tt>true</tt>, <tt>false</tt>, or a Symbol for <tt>value</tt>. Arguments are validated and converted into integers for the struct setter method. def set_behavior(behavior, value) #:doc: raise ArgumentError, "No setting #{behavior.inspect}" unless b_id = BEHAVIORS[behavior] raise ArgumentError, "No setting value #{value.inspect}" unless v_id = BEHAVIOR_VALUES[value] # Scoped validations msg = "Invalid setting value #{value.inspect} for #{behavior.inspect}" if behavior == :hash raise ArgumentError, msg unless HASH_VALUES[value] elsif behavior == :distribution raise ArgumentError, msg unless DISTRIBUTION_VALUES[value] end # STDERR.puts "Setting #{behavior}:#{b_id} => #{value}:#{v_id}" unless value == false # XXX Setting false still turns on the behavior; maybe a Rlibmemcached bug Rlibmemcached.memcached_behavior_set(@struct, b_id, v_id) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
memcached-0.7 | lib/memcached/behaviors.rb |
memcached-0.7.1 | lib/memcached/behaviors.rb |
memcached-0.7.2 | lib/memcached/behaviors.rb |