class StaticRails::MatchesRequestToStaticSite

Public Instance Methods

call(request) click to toggle source
# File lib/static-rails/matches_request_to_static_site.rb, line 3
def call(request)
  StaticRails.config.sites.find { |site|
    subdomain_match?(site, request) && path_match?(site, request) && !skip_path?(site, request)
  }
end

Private Instance Methods

path_match?(site, request) click to toggle source
# File lib/static-rails/matches_request_to_static_site.rb, line 20
def path_match?(site, request)
  request.path_info.start_with?(site.url_root_path)
end
skip_path?(site, request) click to toggle source
# File lib/static-rails/matches_request_to_static_site.rb, line 24
def skip_path?(site, request)
  site.url_skip_paths_starting_with.any? { |path_start|
    request.path_info.start_with?(path_start)
  }
end
subdomain_match?(site, request) click to toggle source
# File lib/static-rails/matches_request_to_static_site.rb, line 11
def subdomain_match?(site, request)
  return true if site.url_subdomain.nil?

  expected = site.url_subdomain.split(".")
  actual = request.host.split(".")

  expected.enum_for.with_index.all? { |sub, i| actual[i] == sub }
end