Sha256: cf23faecd2afdb59eac481ff5b5aeb9af2d6f9019842faa1b6c80269500ff75b

Contents?: true

Size: 779 Bytes

Versions: 2

Compression:

Stored size: 779 Bytes

Contents

module Praxis


  module BootloaderStages

    class Routing < Stage

      def execute
        application.controllers.each do |controller|
          controller.definition.actions.each do |action_name, action|
            action.routes.each do |route|
              target = target_factory(controller, action_name)
              application.router.add_route target, route
            end
          end
        end
      end


      def target_factory(controller, action_name)
        action = controller.definition.actions.fetch(action_name)

        Proc.new do |request|
          request.action = action
          dispatcher = Dispatcher.current( application: application)

          dispatcher.dispatch(controller, action, request)
        end
      end

    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
praxis-0.10.1 lib/praxis/bootloader_stages/routing.rb
praxis-0.10.0 lib/praxis/bootloader_stages/routing.rb