Module: ForeignFQDNRouting::RouteExtensions

Defined in:
lib/foreign_fqdn_routing/routing_extensions.rb

Constant Summary collapse

TESTABLE_REQUEST_METHODS =
[
  :subdomain,
  :domain,
  :method,
  :port,
  :remote_ip, 
  :content_type,
  :accepts,
  :request_uri,
  :protocol
]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



16
17
18
# File 'lib/foreign_fqdn_routing/routing_extensions.rb', line 16

def self.included(base)
  base.alias_method_chain :recognition_conditions, :foreign_domain
end

Instance Method Details

#recognition_conditions_with_foreign_domainObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/foreign_fqdn_routing/routing_extensions.rb', line 20

def recognition_conditions_with_foreign_domain
  result = recognition_conditions_without_foreign_domain
  result << "ForeignFQDNRouting.foreign_domain?(env[:host])"  if conditions[:foreign_domain]  == true
  result << "!ForeignFQDNRouting.foreign_domain?(env[:host])" if conditions[:foreign_domain]  == false
  result << "ForeignFQDNRouting.foreign_fqdn?(env[:host])"    if conditions[:foreign_fqdn]    == true
  result << "!ForeignFQDNRouting.foreign_fqdn?(env[:host])"   if conditions[:foreign_fqdn]    == false
  
  conditions.each do |method, value|
    if TESTABLE_REQUEST_METHODS.include? method
      result << if value.is_a? Regexp
        "conditions[#{method.inspect}] =~ env[#{method.inspect}]"
      else
        "conditions[#{method.inspect}] === env[#{method.inspect}]"
      end
    end
  end # conditions
  result
end