Sha256: 29ccfc68f3128c54d6b384f665bdc807c79fcbb5e63ea8e641f647d66bf48717
Contents?: true
Size: 1.91 KB
Versions: 18
Compression:
Stored size: 1.91 KB
Contents
# ValKey Objects Based upon the redis-objects library, VK allows for ValKey backed ruby objects. ## installation ``` gem install valkey-objects ``` ## usage ### simple ``` require 'valkey/objects' class ValKey # 1. include valkey-objects layer include VK # 2. stitch your object together. value :myvalue counter :mycounter hashkey :myhash sortedset :mysortedset set :myset queue :myqueue place :myplace pipe :mypipe toggle :mytoggle # 3. define @id in initialize. def initialize k @id = k end # other stuff... end @x = ValKey.new("My Special Valkey object.") @x.mypipe.on { |msg| puts %[MSG]; ap msg } @x.mypipe << "Pipe Connected!" @x.myvalue.value = "Hello, World" @x.mycounter.value = 1.2345 @x.myhash[:key] = "Value" @x.mysortedset["my other key"] = 9.8 @x.mysortedset.poke "my key", @x.mysortedset["my other key"] @x.mysortedset.value { |i, e| puts %[Sorted Sets: i: #{i} e: #{e}] } @x.myset << "my member" @x.myset << "my new member" h = @x.myset[/ new /] @x.myset.value { |i, e| puts %[Sets: i: #{i} e: #{e}] } @x.myplace.add "Palermo", 13.361389, 38.115556 @x.myplace.add "Catania", 15.087269, 37.502669 distance = @x.myplace.distance "Palermo", "Catania" places = @x.myplace.radius 15.087269, 37.502669, 5000 @x.myplace.value { |i, e| puts %[Places: i: #{i} e: #{e}] } ``` ### advanced ``` class Game include VK sortedset :points def initialize k @id = k end def score p, h={ points: 1 } self.points.poke p, h[:points] end end @game = Hash.new { |h,k| h[k] = Game.new(k) } ``` ### modular ``` module X @@X = Hash.new { |h,k| h[k] = Ex.new(k) } class Ex include VK set :stuff pipe :ear def initialize k @id = k end end def self.keys @@X.keys end def self.[] k if !@@X.has_key?(k) @@X[k].ear.on { |msg| puts "MSG[#{k}]:"; ap msg } end @@X[k] end end X['Aaa'].ear << %[A] X['Bbb'].ear << %[B] X['Ccc'].ear << %[C] ```
Version data entries
18 entries across 18 versions & 1 rubygems