Sha256: 78d8f4be194534113d8248ba11af628388aec5a0ff153e87a7d39c1efb7391f0

Contents?: true

Size: 1.19 KB

Versions: 3

Compression:

Stored size: 1.19 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
  class 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[
        # 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 call(path)
          log(path)

          catch(:respond) {
            response.write Controller.handle(path)
          }

          FILTER.each{|f| f.call(response)}
          response
        rescue Ramaze::Error => ex
          ex
        end

        def log(path)
          case path
          when *Global.boring
          else
            Log.info("Dynamic request from #{request.ip}: #{request.request_uri}")
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 3 rubygems

Version Path
Pistos-ramaze-2008.09 lib/ramaze/dispatcher/action.rb
manveru-ramaze-2008.10 lib/ramaze/dispatcher/action.rb
ramaze-2008.11 lib/ramaze/dispatcher/action.rb