class Hanami::Slice::Router
‘Hanami::Router` subclass with enhancements for use within Hanami
apps.
This is loaded from Hanami
apps and slices and made available as their {Hanami::Slice::ClassMethods#router router}.
@api private @since 2.0.0
Attributes
middleware_stack[R]
@api private @since 2.0.0
path_prefix[R]
@api private @since 2.0.0
Public Class Methods
new(routes:, middleware_stack: Routing::Middleware::Stack.new, prefix: ::Hanami::Router::DEFAULT_PREFIX, **kwargs, &blk)
click to toggle source
@api private @since 2.0.0
Calls superclass method
# File lib/hanami/slice/router.rb, line 25 def initialize(routes:, middleware_stack: Routing::Middleware::Stack.new, prefix: ::Hanami::Router::DEFAULT_PREFIX, **kwargs, &blk) @path_prefix = Hanami::Router::Prefix.new(prefix) @middleware_stack = middleware_stack instance_eval(&blk) super(**kwargs, &routes) end
Public Instance Methods
freeze()
click to toggle source
@api private @since 2.0.0
Calls superclass method
# File lib/hanami/slice/router.rb, line 34 def freeze return self if frozen? remove_instance_variable(:@middleware_stack) super end
slice(slice_name, at:, &blk)
click to toggle source
Yields a block for routes to resolve their action components from the given slice.
An optional URL prefix may be supplied with ‘at:`.
@example
# config/routes.rb module MyApp class Routes < Hanami::Routes slice :admin, at: "/admin" do # Will route to the "actions.posts.index" component in Admin::Slice get "posts", to: "posts.index" end end end
@param slice_name [Symbol] the slice’s name @param at [String, nil] optional URL prefix for the routes
@api public @since 2.0.0
# File lib/hanami/slice/router.rb, line 68 def slice(slice_name, at:, &blk) blk ||= @resolver.find_slice(slice_name).routes prev_resolver = @resolver @resolver = @resolver.to_slice(slice_name) scope(at, &blk) ensure @resolver = prev_resolver end
to_rack_app()
click to toggle source
@api private @since 2.0.0
# File lib/hanami/slice/router.rb, line 81 def to_rack_app middleware_stack.to_rack_app(self) end
use(*args, **kwargs, &blk)
click to toggle source
@api private @since 2.0.0
# File lib/hanami/slice/router.rb, line 43 def use(*args, **kwargs, &blk) middleware_stack.use(*args, **kwargs.merge(path_prefix: path_prefix.to_s), &blk) end