class Allinone::SiteSelector

Public Class Methods

new(request_host) click to toggle source
# File lib/allinone/site_selector.rb, line 4
def initialize(request_host)
  @request_host = request_host.downcase
  @@domains_map_last_build_at ||= Time.at(0).to_datetime.utc
  setup_domains_map
end

Public Instance Methods

fetch() click to toggle source
# File lib/allinone/site_selector.rb, line 10
def fetch
  site_id = @@domains_map[@request_host]
  Site.where(id: site_id).first
end

Private Instance Methods

build_domains_map() click to toggle source
# File lib/allinone/site_selector.rb, line 22
def build_domains_map
  @@domains_map = domains_map
  @@domains_map_last_build_at = 1.second.ago.to_datetime.utc
end
domains_map() click to toggle source
# File lib/allinone/site_selector.rb, line 27
def domains_map
  Hash[*Domain.select([:name,:site_id]).all.collect{|p| [p.name.downcase, p.site_id]}.flatten]
end
domains_table_last_updated_at() click to toggle source
# File lib/allinone/site_selector.rb, line 31
def domains_table_last_updated_at
  Domain.order('updated_at').last.updated_at
end
setup_domains_map() click to toggle source
# File lib/allinone/site_selector.rb, line 16
def setup_domains_map
  if domains_table_last_updated_at > @@domains_map_last_build_at
    build_domains_map
  end
end