Sha256: 166b58443ee8ba0179c643b6896ae59d9536d453487a03558aee44bd298632d0

Contents?: true

Size: 1.04 KB

Versions: 22

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

module Alchemy
  # Routing constraints for Alchemy's strong catch all route.
  #
  # Alchemy has a very strong catch all route.
  # But we don't want to handle all requests.
  #
  # For instance we only want to handle html requests and
  # don't want to swallow the rails/info routes in development mode.
  #
  class RoutingConstraints
    LOCALE_REGEXP = /[a-z]{2}(-[a-zA-Z]{2})?/

    def matches?(request)
      @request = request
      @params = @request.params

      handable_format? && no_rails_route?
    end

    private

    # We only want html requests to be handled by us.
    #
    # If an unknown format is requested we want to handle this,
    # because it could be a legacy route that needs to be redirected.
    #
    def handable_format?
      @request.format.symbol.nil? || @request.format.html?
    end

    # We don't want to handle the Rails info routes.
    def no_rails_route?
      return true if !%w[development test].include?(Rails.env)

      !@params["urlname"].start_with?("rails/")
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
alchemy_cms-7.4.0 lib/alchemy/routing_constraints.rb
alchemy_cms-7.3.5 lib/alchemy/routing_constraints.rb
alchemy_cms-7.2.8 lib/alchemy/routing_constraints.rb
alchemy_cms-7.1.13 lib/alchemy/routing_constraints.rb
alchemy_cms-7.0.16 lib/alchemy/routing_constraints.rb
alchemy_cms-7.3.4 lib/alchemy/routing_constraints.rb
alchemy_cms-7.3.3 lib/alchemy/routing_constraints.rb
alchemy_cms-7.3.2 lib/alchemy/routing_constraints.rb
alchemy_cms-7.2.7 lib/alchemy/routing_constraints.rb
alchemy_cms-7.3.1 lib/alchemy/routing_constraints.rb
alchemy_cms-7.3.0 lib/alchemy/routing_constraints.rb
alchemy_cms-7.2.6 lib/alchemy/routing_constraints.rb
alchemy_cms-7.2.5 lib/alchemy/routing_constraints.rb
alchemy_cms-7.1.12 lib/alchemy/routing_constraints.rb
alchemy_cms-7.0.15 lib/alchemy/routing_constraints.rb
alchemy_cms-7.2.4 lib/alchemy/routing_constraints.rb
alchemy_cms-7.1.11 lib/alchemy/routing_constraints.rb
alchemy_cms-7.2.3 lib/alchemy/routing_constraints.rb
alchemy_cms-7.1.10 lib/alchemy/routing_constraints.rb
alchemy_cms-7.2.2 lib/alchemy/routing_constraints.rb