class SiteFramework::Routing::SiteConstraint

Attributes

logger[R]

Public Class Methods

new(mapper) click to toggle source
# File lib/site_framework/routing/site_constraint.rb, line 5
def initialize(mapper)
  @logger = Rails.logger
  @mapper = mapper
end

Public Instance Methods

domain(name) click to toggle source
# File lib/site_framework/routing/site_constraint.rb, line 10
def domain(name)
  return @domain if @domain_name == name

  if defined? ActiveRecord
    @domain = SiteFramework::Domain.find_by(name: name)
  elsif defined? Mongoid
    @domain = SiteFramework::Site.where('domains.name' => name).domains.first
  else
    nil
  end
end
matches?(request) click to toggle source
# File lib/site_framework/routing/site_constraint.rb, line 22
def matches?(request)
  return true  if @domain_obj
  return false if @domain_obj == false

  logger.debug("[SITE] REQUEST HOST: #{request.host}")
  logger.debug("DOMAIN: #{domain(request.host)}")

  if @domain_obj = domain(request.host)
    @domain_name = request.host
    logger.debug("'#{@domain_name}' matched.")
    setup(@domain_obj, request)
    initialize_site_default_state

    true
  else
    logger.info("Domain name '#{request.host}' does not match with any exist domains")
    set_request_data_to_nil(request)
    @domain_name = request.host
    false
  end
end

Private Instance Methods

domain_name() click to toggle source
# File lib/site_framework/routing/site_constraint.rb, line 61
def domain_name
  SiteFramework::CurrentState.instance.domain_name
end
initialize_site_default_state() click to toggle source
# File lib/site_framework/routing/site_constraint.rb, line 80
def initialize_site_default_state
  @site.try(:before_dispatch, @mapper)
end
set_request_data_to_nil(request) click to toggle source
# File lib/site_framework/routing/site_constraint.rb, line 67
def set_request_data_to_nil(request)
  request.instance_eval do
    def site
    end

    def domain
    end

    def domain_name
    end
  end
end
setup(domain_, request) click to toggle source
# File lib/site_framework/routing/site_constraint.rb, line 46
def setup(domain_, request)
  SiteFramework::CurrentState.instance.domain_name = domain_.name
  SiteFramework::CurrentState.instance.domain      = domain_
  SiteFramework::CurrentState.instance.site        = domain_.site
  @site                                            = domain_.site

  request.instance_eval do
    def site
      SiteFramework::CurrentState.instance.site
    end

    def domain
      SiteFramework::CurrentState.instance.domain
    end

    def domain_name
      SiteFramework::CurrentState.instance.domain_name
    end
  end
end
site() click to toggle source
# File lib/site_framework/routing/site_constraint.rb, line 53
def site
  SiteFramework::CurrentState.instance.site
end