Class: Lapsoss::Pipeline

Inherits:
Object
  • Object
show all
Defined in:
lib/lapsoss/pipeline.rb

Instance Method Summary collapse

Constructor Details

#initializePipeline

Returns a new instance of Pipeline.



5
6
7
8
9
# File 'lib/lapsoss/pipeline.rb', line 5

def initialize
  @middlewares = []
  @built = false
  @app = nil
end

Instance Method Details

#buildObject



18
19
20
21
22
23
24
25
# File 'lib/lapsoss/pipeline.rb', line 18

def build
  return @app if @built

  # Build the middleware chain from inside out
  @app = build_chain
  @built = true
  @app
end

#call(event, hint = {}) ⇒ Object



27
28
29
30
# File 'lib/lapsoss/pipeline.rb', line 27

def call(event, hint = {})
  build unless @built
  @app.call(event, hint)
end

#middlewaresObject



39
40
41
# File 'lib/lapsoss/pipeline.rb', line 39

def middlewares
  @middlewares.dup
end

#resetObject



32
33
34
35
36
37
# File 'lib/lapsoss/pipeline.rb', line 32

def reset
  @middlewares.clear
  @built = false
  @app = nil
  self
end

#use(middleware_class, *args, **kwargs) ⇒ Object



11
12
13
14
15
16
# File 'lib/lapsoss/pipeline.rb', line 11

def use(middleware_class, *args, **kwargs)
  raise "Cannot modify pipeline after it's built" if @built

  @middlewares << { class: middleware_class, args: args, kwargs: kwargs }
  self
end