module Umbra
Constants
- CHANNEL
- HEADER_KEY
- HEADER_VALUE
- RequestSelector
- SuppressErrorHandler
- VERSION
Attributes
config[R]
Public Class Methods
configure(&block)
click to toggle source
# File lib/umbra.rb, line 23 def configure(&block) @config = Config.default(&block) test_redis_connection! end
encoder()
click to toggle source
# File lib/umbra.rb, line 46 def encoder @config.encoder end
logger()
click to toggle source
# File lib/umbra.rb, line 50 def logger @config.logger end
publish(env)
click to toggle source
# File lib/umbra.rb, line 29 def publish(env) return if umbra_request?(env) return unless @config return unless @config.request_selector.call(env) env["umbra.request_body"] = request_body(env) @config.publisher.call(env) rescue => e @config.error_handler.call(e, env) end
redis()
click to toggle source
# File lib/umbra.rb, line 42 def redis @redis ||= Redis.new(@config.redis_options) end
reset!()
click to toggle source
# File lib/umbra.rb, line 54 def reset! @config = nil @redis = nil end
Private Class Methods
request_body(env)
click to toggle source
# File lib/umbra.rb, line 61 def request_body(env) io = env.fetch("rack.input") io.rewind body = io.read io.rewind body end
test_redis_connection!()
click to toggle source
# File lib/umbra.rb, line 70 def test_redis_connection! logger.info "[umbra] Testing redis connection..." redis.ping logger.info "[umbra] redis is alive!" rescue Redis::BaseError => e logger.warn "[umbra] error while connecting to redis: #{e.message}" reset! rescue => e logger.warn "[umbra] redis is misconfigured: #{e.message}" reset! end
umbra_request?(env)
click to toggle source
# File lib/umbra.rb, line 82 def umbra_request?(env) env[HEADER_KEY] == HEADER_VALUE end