Sha256: fadd299bec189381aed05ddf242d8c405245c099062f83137ac676e8132afdf3

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

#          Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
# All files in this distribution are subject to the terms of the Ruby license.

module Ramaze
  module Dispatcher

    # This dispatcher is responsible for relaying requests to Controller::handle
    # and filtering the results using FILTER.

    class Action

      # The response is passed to each filter by sending .call(response) to it.

      FILTER = OrderedSet.new(
        # Ramaze::Tool::Localize,
      ) unless defined?(FILTER)

      class << self
        include Trinity

        # Takes path, asks Controller to handle it and builds a response on
        # success. The response is then passed to each member of FILTER for
        # post-processing.

        def process(path)
          Log.info("Dynamic request from #{request.ip}: #{request.request_uri}")

          catch(:respond) {
            body = Controller.handle(path)
            response = Response.current.build(body)
          }
          FILTER.each{|f| f.call(response)}
          response
        rescue Ramaze::Error => ex
          ex
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ramaze-0.3.9.1 lib/ramaze/dispatcher/action.rb