Module: Umbra

Defined in:
lib/umbra.rb,
lib/umbra/config.rb,
lib/umbra/encoder.rb,
lib/umbra/version.rb,
lib/umbra/publisher.rb,
lib/umbra/middleware.rb,
lib/umbra/subscriber.rb,
lib/umbra/request_builder.rb,
lib/umbra/shadow_requester.rb,
lib/umbra/synchronous_publisher.rb

Defined Under Namespace

Classes: Config, Encoder, Middleware, Publisher, RequestBuilder, ShadowRequester, Subscriber, SynchronousPublisher

Constant Summary collapse

CHANNEL =
'umbra_channel'
HEADER_KEY =
'HTTP_X_UMBRA_REQUEST'
HEADER_VALUE =
'true'
RequestSelector =
proc { true }
SuppressErrorHandler =
proc { nil }
VERSION =
'0.2.0'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configObject (readonly)

Returns the value of attribute config.



26
27
28
# File 'lib/umbra.rb', line 26

def config
  @config
end

Class Method Details

.configure(&block) ⇒ Object



28
29
30
31
32
# File 'lib/umbra.rb', line 28

def configure(&block)
  @config = Config.default(&block)

  test_redis_connection!
end

.encoderObject



50
51
52
# File 'lib/umbra.rb', line 50

def encoder
  @config.encoder
end

.loggerObject



54
55
56
# File 'lib/umbra.rb', line 54

def logger
  @config.logger
end

.publish(env, response) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/umbra.rb', line 34

def publish(env, response)
  return if umbra_request?(env)
  return unless @config
  return unless @config.request_selector.call(env, response)

  env['umbra.request_body'] = request_body(env)

  @config.publisher.call(env, response)
rescue StandardError => e
  @config.error_handler.call(e, env, response)
end

.redisObject



46
47
48
# File 'lib/umbra.rb', line 46

def redis
  @redis ||= Redis.new(@config.redis_options)
end

.reset!Object



58
59
60
61
# File 'lib/umbra.rb', line 58

def reset!
  @config = nil
  @redis = nil
end