Sha256: 9dd4291fef4ee0bc18b58bc2f084c00f81824a4fcaf6fe068003ff9503a2d4fe

Contents?: true

Size: 1 KB

Versions: 6

Compression:

Stored size: 1 KB

Contents

# frozen_string_literal: true

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

6 entries across 6 versions & 1 rubygems

Version Path
praxis-2.0.pre.24 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.23 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.22 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.21 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.20 lib/praxis/bootloader_stages/routing.rb
praxis-2.0.pre.19 lib/praxis/bootloader_stages/routing.rb