Sha256: 88ef57d509327a362c32041c8c9e773c8c470478a8fb82783e47b169eb1b8c82

Contents?: true

Size: 1014 Bytes

Versions: 13

Compression:

Stored size: 1014 Bytes

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|
            target = target_factory(controller, action_name)
            application.router.add_route target, action.route
          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

13 entries across 13 versions & 1 rubygems

Version Path
praxis-2.0.pre.18 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.17 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.16 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.15 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.14 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.13 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.12 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.11 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.10 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.9 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.8 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.7 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.6 lib/praxis/bootloader_stages/routing.rb