Module: TrailGuide::Helper
  
  
  
  
  
  
  
  
  
  
  
  
    - Defined in:
- lib/trail_guide/helper.rb,
 lib/trail_guide/helper/helper_proxy.rb,
 lib/trail_guide/helper/experiment_proxy.rb
 
Defined Under Namespace
  
    
  
    
      Classes: ExperimentProxy, HelperProxy
    
  
  
    
      Instance Method Summary
      collapse
    
    
  
  
    Instance Method Details
    
      
  
  
    #is_filtered_ip_address?  ⇒ Boolean 
  
  
  
  
    | 
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 | # File 'lib/trail_guide/helper.rb', line 52
def is_filtered_ip_address?
  return @is_filtered_ip_address unless @is_filtered_ip_address.nil?
  @is_filtered_ip_address = begin
    @ip_address_filter_proc ||= -> {
      return false if TrailGuide.configuration.filtered_ip_addresses.nil? || TrailGuide.configuration.filtered_ip_addresses.empty?
      return false unless respond_to?(:request, true) && request.ip
      TrailGuide.configuration.filtered_ip_addresses.each do |ip|
        return true if ip.class == String && request.ip == ip
        return true if ip.class == Regexp && request.ip =~ ip
        return true if ip.class == Range && ip.first.class == IPAddr && ip.include?(IPAddr.new(request.ip))
      end
      return false
    }
    instance_exec(&@ip_address_filter_proc)
  end
end | 
 
    
      
  
  
    #is_filtered_user_agent?  ⇒ Boolean 
  
  
  
  
    | 
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 | # File 'lib/trail_guide/helper.rb', line 33
def is_filtered_user_agent?
  return @is_filtered_user_agent unless @is_filtered_user_agent.nil?
  @is_filtered_user_agent = begin
    @user_agent_filter_proc ||= -> {
      return false if TrailGuide.configuration.filtered_user_agents.nil? || TrailGuide.configuration.filtered_user_agents.empty?
      return false unless respond_to?(:request, true) && request.user_agent
      TrailGuide.configuration.filtered_user_agents.each do |ua|
        return true if ua.class == String && request.user_agent == ua
        return true if ua.class == Regexp && request.user_agent =~ ua
      end
      return false
    }
    instance_exec(&@user_agent_filter_proc)
  end
end | 
 
    
      
  
  
    #is_preview?  ⇒ Boolean 
  
  
  
  
    | 
27
28
29
30
31 | # File 'lib/trail_guide/helper.rb', line 27
def is_preview?
  return false unless respond_to?(:request, true)
   = request.try(:headers)
   && ['x-purpose'] == 'preview'
end | 
 
    
      
  
  
    #trailguide(key = nil, **opts, &block)  ⇒ Object 
  
  
  
  
    | 
6
7
8
9
10
11 | # File 'lib/trail_guide/helper.rb', line 6
def trailguide(key=nil, **opts, &block)
  @trailguide_proxy ||= HelperProxy.new(self)
  @trailguide_proxy = HelperProxy.new(self) if @trailguide_proxy.context != self
  return @trailguide_proxy if key.nil?
  @trailguide_proxy.choose!(key, **opts, &block)
end | 
 
    
      
  
  
    #trailguide_excluded_request?  ⇒ Boolean 
  
  
  
  
    
TODO maybe move this to the experiment proxy so it can be configured per-experiment
   
 
  
    | 
23
24
25 | # File 'lib/trail_guide/helper.rb', line 23
def trailguide_excluded_request?
  @trailguide_excluded_request ||= instance_exec(self, &TrailGuide.configuration.request_filter)
end | 
 
    
      
  
  
    #trailguide_participant  ⇒ Object