Sha256: a45bd759ab004d078be0f70d34c447ea9cbbc9371618dccac8ee5162571716c1

Contents?: true

Size: 1.04 KB

Versions: 15

Compression:

Stored size: 1.04 KB

Contents

module Praxis


  module BootloaderStages

    class Routing < Stage
      class Target
        attr_reader :action
        def initialize(application, controller, action)
          @application = application
          @controller = controller
          @action = action
        end
        
        def call(request)
          request.action = @action
          dispatcher = Dispatcher.current(application: @application)

          dispatcher.dispatch(@controller, @action, request)
        end
      end
      
      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)

        Target.new(application, controller, action)
      end

    end

  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
praxis-2.0.pre.5 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.4 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.3 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.2 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.1 lib/praxis/bootloader_stages/routing.rb
praxis-0.22.pre.2 lib/praxis/bootloader_stages/routing.rb
praxis-0.22.pre.1 lib/praxis/bootloader_stages/routing.rb
praxis-0.21 lib/praxis/bootloader_stages/routing.rb
praxis-0.20.1 lib/praxis/bootloader_stages/routing.rb
praxis-0.20.0 lib/praxis/bootloader_stages/routing.rb
praxis-0.19.0 lib/praxis/bootloader_stages/routing.rb
praxis-0.18.1 lib/praxis/bootloader_stages/routing.rb
praxis-0.18.0 lib/praxis/bootloader_stages/routing.rb
praxis-0.17.1 lib/praxis/bootloader_stages/routing.rb
praxis-0.17.0 lib/praxis/bootloader_stages/routing.rb