class Finist
Constants
- SCRIPT
Public Class Methods
new(redis, name, init)
click to toggle source
# File lib/finist.rb, line 18 def initialize(redis, name, init) @name = sprintf("finist:%s", name) @redis = redis @redis.call("SET", @name, init, "NX") end
Public Instance Methods
event_key(ev)
click to toggle source
# File lib/finist.rb, line 24 def event_key(ev) sprintf("%s:%s", @name, ev) end
on(ev, curr_state, next_state)
click to toggle source
# File lib/finist.rb, line 28 def on(ev, curr_state, next_state) @redis.call("HSET", event_key(ev), curr_state, next_state) end
rm(ev)
click to toggle source
# File lib/finist.rb, line 32 def rm(ev) @redis.call("DEL", event_key(ev)) end
send_event(ev)
click to toggle source
# File lib/finist.rb, line 40 def send_event(ev) @redis.call("EVAL", SCRIPT, "2", @name, event_key(ev)) end
state()
click to toggle source
# File lib/finist.rb, line 36 def state @redis.call("GET", @name) end
trigger(ev)
click to toggle source
# File lib/finist.rb, line 44 def trigger(ev) result = send_event(ev) return result[0], result[1] != nil end