Sha256: 140f627d724757a183c803742cc16da3cfabf7d8b1aa13db82a5bdd8f53c24f1

Contents?: true

Size: 1.04 KB

Versions: 9

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

9 entries across 9 versions & 1 rubygems

Version Path
praxis-0.16.1 lib/praxis/bootloader_stages/routing.rb
praxis-0.16.0 lib/praxis/bootloader_stages/routing.rb
praxis-0.15.0 lib/praxis/bootloader_stages/routing.rb
praxis-0.14.0 lib/praxis/bootloader_stages/routing.rb
praxis-0.13.0 lib/praxis/bootloader_stages/routing.rb
praxis-0.11.2 lib/praxis/bootloader_stages/routing.rb
praxis-0.11.1 lib/praxis/bootloader_stages/routing.rb
praxis-0.11 lib/praxis/bootloader_stages/routing.rb
praxis-0.11pre lib/praxis/bootloader_stages/routing.rb