Class: Meddler

Inherits:
Object
  • Object
show all
Defined in:
lib/meddler.rb,
lib/meddler/builder.rb

Defined Under Namespace

Classes: Builder, PostInterceptor, PreInterceptor

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(original_app, on_request, on_response, before, after, wrapped_app, skip_app = original_app) ⇒ Meddler

Returns a new instance of Meddler.



10
11
12
13
14
# File 'lib/meddler.rb', line 10

def initialize(original_app, on_request, on_response, before, after, wrapped_app, skip_app = original_app)
  @original_app, @skip_app = original_app, skip_app
  wrapped_app.run(PostInterceptor.new(original_app, on_response, after, signal))
  @app = PreInterceptor.new(wrapped_app.to_app, skip_app, on_request, before)
end

Instance Attribute Details

#appObject (readonly)

Returns the value of attribute app.



8
9
10
# File 'lib/meddler.rb', line 8

def app
  @app
end

#original_appObject (readonly)

Returns the value of attribute original_app.



8
9
10
# File 'lib/meddler.rb', line 8

def original_app
  @original_app
end

Instance Method Details

#call(env) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/meddler.rb', line 20

def call(env)
  response = catch(signal) do
    app.call(env)
  end

  if response.length == 4 && response.last == signal
    response.pop
    if @skip_app != @original_app
      @skip_app.call(env)
    else
     response
    end
  else
    response
  end
end

#signalObject



16
17
18
# File 'lib/meddler.rb', line 16

def signal
  self.object_id.to_s.to_sym
end