Sha256: 016499a41d4459ffcc0459455260d430ddabaea60f837afddaef6293dc94ddc3

Contents?: true

Size: 1.83 KB

Versions: 9

Compression:

Stored size: 1.83 KB

Contents

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

module Ramaze
  class Current
    include Trinity
    extend Trinity

    def initialize(app)
      @app = app
    end

    def call(env)
      setup(env)
      before_call
      record

      @app.call(env)
      finish
    ensure
      after_call
    end

    def record
      return unless filter = Global.record
      request = Current.request
      Record << request if filter.call(request)
    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 self.call(env)
    end

    def before_call
    end

    def after_call
    end
  end
end
__END__

  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_given? ? block : @before
      end

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

      def after(&block)
        @after = block_given? ? block : @after
      end

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

Version data entries

9 entries across 9 versions & 3 rubygems

Version Path
Pistos-ramaze-2008.09 lib/ramaze/current.rb
Pistos-ramaze-2008.12 lib/ramaze/current.rb
Pistos-ramaze-2009.01 lib/ramaze/current.rb
manveru-ramaze-2008.09 lib/ramaze/current.rb
manveru-ramaze-2008.10 lib/ramaze/current.rb
manveru-ramaze-2008.12 lib/ramaze/current.rb
manveru-ramaze-2009.01 lib/ramaze/current.rb
ramaze-2009.01 lib/ramaze/current.rb
ramaze-2008.11 lib/ramaze/current.rb