Class: Rack::MDK::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/mdk.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, params = {}) {|@mdk| ... } ⇒ Session

Returns a new instance of Session.

Yields:

  • (@mdk)


5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/rack/mdk.rb', line 5

def initialize(app, params={})
  # Quark runtime has at_exit that stops it... and sinatra only runs via
  # at_exit! So we want to make sure Quark runtime starts *after* sinatra
  # has started. Which is why we only require 'mdk' here:
  require 'mdk'
  @app = app
  @mdk = ::Quark::Mdk.start
  if params[:timeout] != nil
    @mdk.setDefaultDeadline(params[:timeout])
  end
  at_exit do
    @mdk.stop
  end
  yield @mdk if block_given?
end

Instance Method Details

#call(env) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/rack/mdk.rb', line 21

def call(env)
  env[:mdk_session] = @mdk.join(env["HTTP_X_MDK_CONTEXT"])
  env[:mdk_session].start_interaction
  begin
    @app.call(env)
  rescue Exception => e
    env[:mdk_session].fail_interaction(e.message);
    raise
  ensure
    env[:mdk_session].finish_interaction
  end
end