Sha256: d4521bd4054c4a3f52ee6f024699caa4c12325abea5ef0d85ad715dcd79c1464

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

#          Copyright (c) 2006 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)
          Inform.info("Dynamic request from #{request.remote_addr}: #{path}")
          body = Controller.handle(path)
          response = Response.current.build(body)
          FILTER.inject(response){|r,f| f.call(r) }
        rescue Ramaze::Error => ex
          ex
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

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