Sha256: 57089e3086b7903fbed3ecc1209b97c3d945270238c76aea3f9632b4dc6c2aa8

Contents?: true

Size: 1.22 KB

Versions: 2

Compression:

Stored size: 1.22 KB

Contents

require 'ramaze/current/request'
require 'ramaze/current/response'
require 'ramaze/current/session'

module Ramaze
  module Current
    class << self
      include Trinity

      def call(env)
        setup(env)
        before_call

        if filter = Global.record
          request = Current.request
          Record << request if filter[request]
        end

        Dispatcher.handle

        finish
      ensure
        after_call
      end

      def setup(env)
        self.request = Request.new(env)
        self.response = Response.new
        self.session = Session.new
      end

      def finish
        session.finish if session
        response.finish
      end

      def before(&block)
        @before = block if block
        @before
      end

      def before_call
        if before
          begin
            before.call
          rescue Object => e
            Ramaze::Log.error e 
            raise
          end
        end
      end

      def after(&block)
        @after = block if block
        @after
      end

      def after_call
        if after
          begin
            after.call
          rescue Object => e
            Ramaze::Log.error e 
            raise
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ramaze-0.3.9 lib/ramaze/current.rb
ramaze-0.3.9.1 lib/ramaze/current.rb