Class: Rack::MDK::Session
- Inherits:
-
Object
- Object
- Rack::MDK::Session
- Defined in:
- lib/rack/mdk.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, params = {}) {|@mdk| ... } ⇒ Session
constructor
A new instance of Session.
Constructor Details
#initialize(app, params = {}) {|@mdk| ... } ⇒ Session
Returns a new instance of Session.
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.); raise ensure env[:mdk_session].finish_interaction end end |