Sha256: 4814898c64d5c1953e3a25a55e460cc85e0d155c749e586748946dd2e340d514
Contents?: true
Size: 1.09 KB
Versions: 1
Compression:
Stored size: 1.09 KB
Contents
module Gaffe class ErrorsControllerResolver # Accessors attr_reader :controller # Constants BUILTIN_CONTROLLER = lambda do require 'gaffe/errors_controller' Gaffe::ErrorsController end def initialize(env) @env = env end def resolved_controller # Use the configured controller first controller = Gaffe.configuration.errors_controller # Parse the request if multiple controllers are configured controller = request_controller(controller) if controller.is_a?(Hash) # Fall back on the builtin errors controller controller ||= BUILTIN_CONTROLLER.call # Make sure we return a Class controller.respond_to?(:constantize) ? controller.constantize : controller end private def request_controller(controllers) matched_controllers = controllers.find do |pattern, _| relative_url = @env['REQUEST_URI'] absolute_url = @env['HTTP_HOST'] + relative_url [relative_url, absolute_url].any? { |url| (url =~ pattern).present? } end matched_controllers.try(:last) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
gaffe-1.2.0 | lib/gaffe/errors_controller_resolver.rb |