analytical 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
 - data/analytical.gemspec +3 -1
 - data/lib/analytical/adwords.rb +13 -13
 - data/lib/analytical/api.rb +1 -1
 - data/lib/analytical/base.rb +16 -2
 - data/lib/analytical/clicky.rb +19 -19
 - data/lib/analytical/console.rb +9 -8
 - data/lib/analytical/crazy_egg.rb +9 -8
 - data/lib/analytical/google.rb +15 -14
 - data/lib/analytical/hubspot.rb +12 -11
 - data/lib/analytical/kiss_metrics.rb +13 -12
 - data/spec/analytical/api_spec.rb +27 -21
 - data/spec/analytical/base_spec.rb +96 -0
 - data/spec/analytical/kiss_metrics_spec.rb +1 -1
 - metadata +6 -4
 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            1. 
     | 
| 
      
 1 
     | 
    
         
            +
            1.2.0
         
     | 
    
        data/analytical.gemspec
    CHANGED
    
    | 
         @@ -5,7 +5,7 @@ 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.name = %q{analytical}
         
     | 
| 
       8 
     | 
    
         
            -
              s.version = "1. 
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "1.2.0"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.authors = ["Joshua Krall"]
         
     | 
| 
         @@ -87,6 +87,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       87 
87 
     | 
    
         
             
                 "lib/analytical/kiss_metrics.rb",
         
     | 
| 
       88 
88 
     | 
    
         
             
                 "rails/init.rb",
         
     | 
| 
       89 
89 
     | 
    
         
             
                 "spec/analytical/api_spec.rb",
         
     | 
| 
      
 90 
     | 
    
         
            +
                 "spec/analytical/base_spec.rb",
         
     | 
| 
       90 
91 
     | 
    
         
             
                 "spec/analytical/bot_detector_spec.rb",
         
     | 
| 
       91 
92 
     | 
    
         
             
                 "spec/analytical/clicky_spec.rb",
         
     | 
| 
       92 
93 
     | 
    
         
             
                 "spec/analytical/google_spec.rb",
         
     | 
| 
         @@ -103,6 +104,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       103 
104 
     | 
    
         
             
              s.summary = %q{Gem for managing multiple analytics services in your rails app.}
         
     | 
| 
       104 
105 
     | 
    
         
             
              s.test_files = [
         
     | 
| 
       105 
106 
     | 
    
         
             
                "spec/analytical/api_spec.rb",
         
     | 
| 
      
 107 
     | 
    
         
            +
                 "spec/analytical/base_spec.rb",
         
     | 
| 
       106 
108 
     | 
    
         
             
                 "spec/analytical/bot_detector_spec.rb",
         
     | 
| 
       107 
109 
     | 
    
         
             
                 "spec/analytical/clicky_spec.rb",
         
     | 
| 
       108 
110 
     | 
    
         
             
                 "spec/analytical/google_spec.rb",
         
     | 
    
        data/lib/analytical/adwords.rb
    CHANGED
    
    | 
         @@ -9,21 +9,21 @@ module Analytical 
     | 
|
| 
       9 
9 
     | 
    
         
             
                  end
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                  def init_javascript(location)
         
     | 
| 
       12 
     | 
    
         
            -
                     
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                         
     | 
| 
      
 12 
     | 
    
         
            +
                    init_location(location) do
         
     | 
| 
      
 13 
     | 
    
         
            +
                      @initializing = true
         
     | 
| 
      
 14 
     | 
    
         
            +
                      html = "<!-- Analytical Init: Google Adwords -->\n"
         
     | 
| 
      
 15 
     | 
    
         
            +
                      event_commands = []
         
     | 
| 
      
 16 
     | 
    
         
            +
                      @commands.each do |c|
         
     | 
| 
      
 17 
     | 
    
         
            +
                        if c[0] == :event
         
     | 
| 
      
 18 
     | 
    
         
            +
                          event_commands << event(*c[1..-1])
         
     | 
| 
      
 19 
     | 
    
         
            +
                        end
         
     | 
| 
       20 
20 
     | 
    
         
             
                      end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                    @initializing = false
         
     | 
| 
      
 21 
     | 
    
         
            +
                      html += event_commands.join("\n")
         
     | 
| 
      
 22 
     | 
    
         
            +
                      @commands = @commands.delete_if {|c| c[0] == :event }
         
     | 
| 
      
 23 
     | 
    
         
            +
                      @initializing = false
         
     | 
| 
       25 
24 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
                      html
         
     | 
| 
      
 26 
     | 
    
         
            +
                    end
         
     | 
| 
       27 
27 
     | 
    
         
             
                  end
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
                  #
         
     | 
    
        data/lib/analytical/api.rb
    CHANGED
    
    | 
         @@ -70,7 +70,7 @@ module Analytical 
     | 
|
| 
       70 
70 
     | 
    
         
             
                def tracking_javascript(location)
         
     | 
| 
       71 
71 
     | 
    
         
             
                  commands = []
         
     | 
| 
       72 
72 
     | 
    
         
             
                  @modules.each do |name, m|
         
     | 
| 
       73 
     | 
    
         
            -
                    commands += m.process_queued_commands if m. 
     | 
| 
      
 73 
     | 
    
         
            +
                    commands += m.process_queued_commands if m.init_location?(location) || m.initialized
         
     | 
| 
       74 
74 
     | 
    
         
             
                  end
         
     | 
| 
       75 
75 
     | 
    
         
             
                  commands = commands.delete_if{|c| c.blank? || c.empty?}
         
     | 
| 
       76 
76 
     | 
    
         
             
                  unless commands.empty?
         
     | 
    
        data/lib/analytical/base.rb
    CHANGED
    
    | 
         @@ -1,13 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Analytical
         
     | 
| 
       2 
2 
     | 
    
         
             
              module Base
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Api
         
     | 
| 
       4 
     | 
    
         
            -
                  attr_reader :tracking_command_location, :parent, :options
         
     | 
| 
      
 4 
     | 
    
         
            +
                  attr_reader :tracking_command_location, :parent, :options, :initialized
         
     | 
| 
       5 
5 
     | 
    
         
             
                  attr_accessor :commands
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                  def initialize(_parent, _options={})
         
     | 
| 
       8 
8 
     | 
    
         
             
                    @parent = _parent
         
     | 
| 
       9 
9 
     | 
    
         
             
                    @options = _options
         
     | 
| 
       10 
10 
     | 
    
         
             
                    @tracking_command_location = :body_prepend
         
     | 
| 
      
 11 
     | 
    
         
            +
                    @initialized = false
         
     | 
| 
       11 
12 
     | 
    
         
             
                    @commands = []
         
     | 
| 
       12 
13 
     | 
    
         
             
                  end
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
         @@ -29,7 +30,7 @@ module Analytical 
     | 
|
| 
       29 
30 
     | 
    
         
             
                  def set(data); ''; end
         
     | 
| 
       30 
31 
     | 
    
         | 
| 
       31 
32 
     | 
    
         
             
                  # This method generates the initialization javascript that an analytics service uses to track your site
         
     | 
| 
       32 
     | 
    
         
            -
                  def init_javascript(location);  
     | 
| 
      
 33 
     | 
    
         
            +
                  def init_javascript(location); ''; end
         
     | 
| 
       33 
34 
     | 
    
         | 
| 
       34 
35 
     | 
    
         
             
                  def queue(*args)
         
     | 
| 
       35 
36 
     | 
    
         
             
                    if args.first==:identify
         
     | 
| 
         @@ -48,6 +49,19 @@ module Analytical 
     | 
|
| 
       48 
49 
     | 
    
         
             
                    @tracking_command_location==location
         
     | 
| 
       49 
50 
     | 
    
         
             
                  end
         
     | 
| 
       50 
51 
     | 
    
         | 
| 
      
 52 
     | 
    
         
            +
                  def init_location(location, &block)
         
     | 
| 
      
 53 
     | 
    
         
            +
                    if init_location?(location)
         
     | 
| 
      
 54 
     | 
    
         
            +
                      @initialized = true
         
     | 
| 
      
 55 
     | 
    
         
            +
                      if block_given?
         
     | 
| 
      
 56 
     | 
    
         
            +
                        yield
         
     | 
| 
      
 57 
     | 
    
         
            +
                      else
         
     | 
| 
      
 58 
     | 
    
         
            +
                        ''
         
     | 
| 
      
 59 
     | 
    
         
            +
                      end
         
     | 
| 
      
 60 
     | 
    
         
            +
                    else
         
     | 
| 
      
 61 
     | 
    
         
            +
                      ''
         
     | 
| 
      
 62 
     | 
    
         
            +
                    end
         
     | 
| 
      
 63 
     | 
    
         
            +
                  end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
       51 
65 
     | 
    
         
             
                end
         
     | 
| 
       52 
66 
     | 
    
         
             
              end
         
     | 
| 
       53 
67 
     | 
    
         
             
            end
         
     | 
    
        data/lib/analytical/clicky.rb
    CHANGED
    
    | 
         @@ -9,27 +9,27 @@ module Analytical 
     | 
|
| 
       9 
9 
     | 
    
         
             
                  end
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                  def init_javascript(location)
         
     | 
| 
       12 
     | 
    
         
            -
                     
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                         
     | 
| 
      
 12 
     | 
    
         
            +
                    init_location(location) do
         
     | 
| 
      
 13 
     | 
    
         
            +
                      protocol = options[:ssl] ? 'https' : 'http'
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                      js = <<-HTML
         
     | 
| 
      
 16 
     | 
    
         
            +
                      <!-- Analytical Init: Clicky -->
         
     | 
| 
      
 17 
     | 
    
         
            +
                      <script src="#{protocol}://static.getclicky.com/js" type="text/javascript"></script>
         
     | 
| 
      
 18 
     | 
    
         
            +
                      <script type="text/javascript">clicky.init('#{@options[:key]}');</script>
         
     | 
| 
      
 19 
     | 
    
         
            +
                      <noscript><p><img alt="Clicky" width="1" height="1" src="#{protocol}://in.getclicky.com/#{@options[:key]}ns.gif" /></p></noscript>
         
     | 
| 
      
 20 
     | 
    
         
            +
                      HTML
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                      identify_commands = []
         
     | 
| 
      
 23 
     | 
    
         
            +
                      @commands.each do |c|
         
     | 
| 
      
 24 
     | 
    
         
            +
                        if c[0] == :identify
         
     | 
| 
      
 25 
     | 
    
         
            +
                          identify_commands << identify(*c[1..-1])
         
     | 
| 
      
 26 
     | 
    
         
            +
                        end
         
     | 
| 
       27 
27 
     | 
    
         
             
                      end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                    @commands = @commands.delete_if {|c| c[0] == :identify }
         
     | 
| 
      
 28 
     | 
    
         
            +
                      js = identify_commands.join("\n") + "\n" + js
         
     | 
| 
      
 29 
     | 
    
         
            +
                      @commands = @commands.delete_if {|c| c[0] == :identify }
         
     | 
| 
       31 
30 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 31 
     | 
    
         
            +
                      js
         
     | 
| 
      
 32 
     | 
    
         
            +
                    end
         
     | 
| 
       33 
33 
     | 
    
         
             
                  end
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
35 
     | 
    
         
             
                  def track(*args)
         
     | 
    
        data/lib/analytical/console.rb
    CHANGED
    
    | 
         @@ -9,14 +9,15 @@ module Analytical 
     | 
|
| 
       9 
9 
     | 
    
         
             
                  end
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                  def init_javascript(location)
         
     | 
| 
       12 
     | 
    
         
            -
                     
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
                    init_location(location) do
         
     | 
| 
      
 13 
     | 
    
         
            +
                      js = <<-HTML
         
     | 
| 
      
 14 
     | 
    
         
            +
                      <!-- Analytical Init: Console -->
         
     | 
| 
      
 15 
     | 
    
         
            +
                      <script type="text/javascript">
         
     | 
| 
      
 16 
     | 
    
         
            +
                        console.log('Analytical Init: Console');
         
     | 
| 
      
 17 
     | 
    
         
            +
                      </script>
         
     | 
| 
      
 18 
     | 
    
         
            +
                      HTML
         
     | 
| 
      
 19 
     | 
    
         
            +
                      js
         
     | 
| 
      
 20 
     | 
    
         
            +
                    end
         
     | 
| 
       20 
21 
     | 
    
         
             
                  end
         
     | 
| 
       21 
22 
     | 
    
         | 
| 
       22 
23 
     | 
    
         
             
                  def track(*args)
         
     | 
    
        data/lib/analytical/crazy_egg.rb
    CHANGED
    
    | 
         @@ -9,14 +9,15 @@ module Analytical 
     | 
|
| 
       9 
9 
     | 
    
         
             
                  end
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                  def init_javascript(location)
         
     | 
| 
       12 
     | 
    
         
            -
                     
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
                    init_location(location) do
         
     | 
| 
      
 13 
     | 
    
         
            +
                      code_url = "#{options[:key][0,4]}/#{options[:key][4,4]}"
         
     | 
| 
      
 14 
     | 
    
         
            +
                      protocol = options[:ssl] ? 'https' : 'http'
         
     | 
| 
      
 15 
     | 
    
         
            +
                      js = <<-HTML
         
     | 
| 
      
 16 
     | 
    
         
            +
                      <!-- Analytical Init: CrazyEgg -->
         
     | 
| 
      
 17 
     | 
    
         
            +
                      <script type="text/javascript" src="#{protocol}://s3.amazonaws.com/new.cetrk.com/pages/scripts/#{code_url}.js"> </script>
         
     | 
| 
      
 18 
     | 
    
         
            +
                      HTML
         
     | 
| 
      
 19 
     | 
    
         
            +
                      js
         
     | 
| 
      
 20 
     | 
    
         
            +
                    end
         
     | 
| 
       20 
21 
     | 
    
         
             
                  end
         
     | 
| 
       21 
22 
     | 
    
         | 
| 
       22 
23 
     | 
    
         
             
                end
         
     | 
    
        data/lib/analytical/google.rb
    CHANGED
    
    | 
         @@ -9,20 +9,21 @@ module Analytical 
     | 
|
| 
       9 
9 
     | 
    
         
             
                  end
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                  def init_javascript(location)
         
     | 
| 
       12 
     | 
    
         
            -
                     
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
                    init_location(location) do
         
     | 
| 
      
 13 
     | 
    
         
            +
                      js = <<-HTML
         
     | 
| 
      
 14 
     | 
    
         
            +
                      <!-- Analytical Init: Google -->
         
     | 
| 
      
 15 
     | 
    
         
            +
                      <script type="text/javascript">
         
     | 
| 
      
 16 
     | 
    
         
            +
                        var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
         
     | 
| 
      
 17 
     | 
    
         
            +
                        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
         
     | 
| 
      
 18 
     | 
    
         
            +
                      </script>
         
     | 
| 
      
 19 
     | 
    
         
            +
                      <script type="text/javascript">
         
     | 
| 
      
 20 
     | 
    
         
            +
                        var googleAnalyticsTracker = _gat._getTracker("#{options[:key]}");
         
     | 
| 
      
 21 
     | 
    
         
            +
                        googleAnalyticsTracker._initData();
         
     | 
| 
      
 22 
     | 
    
         
            +
                        googleAnalyticsTracker._trackPageview();
         
     | 
| 
      
 23 
     | 
    
         
            +
                      </script>
         
     | 
| 
      
 24 
     | 
    
         
            +
                      HTML
         
     | 
| 
      
 25 
     | 
    
         
            +
                      js
         
     | 
| 
      
 26 
     | 
    
         
            +
                    end
         
     | 
| 
       26 
27 
     | 
    
         
             
                  end
         
     | 
| 
       27 
28 
     | 
    
         | 
| 
       28 
29 
     | 
    
         
             
                  def track(*args)
         
     | 
    
        data/lib/analytical/hubspot.rb
    CHANGED
    
    | 
         @@ -9,17 +9,18 @@ module Analytical 
     | 
|
| 
       9 
9 
     | 
    
         
             
                  end
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                  def init_javascript(location)
         
     | 
| 
       12 
     | 
    
         
            -
                     
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
                    init_location(location) do
         
     | 
| 
      
 13 
     | 
    
         
            +
                      js = <<-HTML
         
     | 
| 
      
 14 
     | 
    
         
            +
                      <!-- Analytical Init: Hubspot -->
         
     | 
| 
      
 15 
     | 
    
         
            +
                      <script type="text/javascript" language="javascript">
         
     | 
| 
      
 16 
     | 
    
         
            +
                      var hs_portalid=#{options[:portal_id]};
         
     | 
| 
      
 17 
     | 
    
         
            +
                      var hs_salog_version = "2.00";
         
     | 
| 
      
 18 
     | 
    
         
            +
                      var hs_ppa = "#{options[:domain]}";
         
     | 
| 
      
 19 
     | 
    
         
            +
                      document.write(unescape("%3Cscript src='" + document.location.protocol + "//" + hs_ppa + "/salog.js.aspx' type='text/javascript'%3E%3C/script%3E"));
         
     | 
| 
      
 20 
     | 
    
         
            +
                      </script>
         
     | 
| 
      
 21 
     | 
    
         
            +
                      HTML
         
     | 
| 
      
 22 
     | 
    
         
            +
                      js
         
     | 
| 
      
 23 
     | 
    
         
            +
                    end
         
     | 
| 
       23 
24 
     | 
    
         
             
                  end
         
     | 
| 
       24 
25 
     | 
    
         | 
| 
       25 
26 
     | 
    
         
             
                end
         
     | 
| 
         @@ -9,18 +9,19 @@ module Analytical 
     | 
|
| 
       9 
9 
     | 
    
         
             
                  end
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                  def init_javascript(location)
         
     | 
| 
       12 
     | 
    
         
            -
                     
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
                    init_location(location) do
         
     | 
| 
      
 13 
     | 
    
         
            +
                      js = <<-HTML
         
     | 
| 
      
 14 
     | 
    
         
            +
                      <!-- Analytical Init: KissMetrics -->
         
     | 
| 
      
 15 
     | 
    
         
            +
                      <script type="text/javascript">
         
     | 
| 
      
 16 
     | 
    
         
            +
                        var _kmq = _kmq || [];
         
     | 
| 
      
 17 
     | 
    
         
            +
                        (function(){function _kms(u,d){if(navigator.appName.indexOf("Microsoft")==0 && d)document.write("<scr"+"ipt defer='defer' async='true' src='"+u+"'></scr"+"ipt>");else{var s=document.createElement('script');s.type='text/javascript';s.async=true;s.src=u;(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(s);}}_kms('http' + ('https:' == document.location.protocol ? 's://': '://') + 'i.kissmetrics.com/i.js', 1);_kms('http'+('https:'==document.location.protocol ? 's://s3.amazonaws.com/' : '://')+'scripts.kissmetrics.com/#{options[:key]}.1.js',1);})();
         
     | 
| 
      
 18 
     | 
    
         
            +
                      </script>
         
     | 
| 
      
 19 
     | 
    
         
            +
                      <script type="text/javascript">
         
     | 
| 
      
 20 
     | 
    
         
            +
                        _kmq.push(['pageView']);
         
     | 
| 
      
 21 
     | 
    
         
            +
                      </script>
         
     | 
| 
      
 22 
     | 
    
         
            +
                      HTML
         
     | 
| 
      
 23 
     | 
    
         
            +
                      js
         
     | 
| 
      
 24 
     | 
    
         
            +
                    end
         
     | 
| 
       24 
25 
     | 
    
         
             
                  end
         
     | 
| 
       25 
26 
     | 
    
         | 
| 
       26 
27 
     | 
    
         
             
                  def identify(id, *args)
         
     | 
    
        data/spec/analytical/api_spec.rb
    CHANGED
    
    | 
         @@ -8,8 +8,8 @@ describe "Analytical::Api" do 
     | 
|
| 
       8 
8 
     | 
    
         
             
                  Analytical::Google::Api.should_receive(:new).and_return(@google = mock('google'))
         
     | 
| 
       9 
9 
     | 
    
         
             
                  a = Analytical::Api.new :modules=>[:console, :google]
         
     | 
| 
       10 
10 
     | 
    
         
             
                  a.modules.should == {
         
     | 
| 
       11 
     | 
    
         
            -
                    :console=>@console, 
     | 
| 
       12 
     | 
    
         
            -
                    :google=>@google, 
     | 
| 
      
 11 
     | 
    
         
            +
                    :console=>@console,
         
     | 
| 
      
 12 
     | 
    
         
            +
                    :google=>@google,
         
     | 
| 
       13 
13 
     | 
    
         
             
                  }
         
     | 
| 
       14 
14 
     | 
    
         
             
                end
         
     | 
| 
       15 
15 
     | 
    
         
             
              end
         
     | 
| 
         @@ -18,47 +18,47 @@ describe "Analytical::Api" do 
     | 
|
| 
       18 
18 
     | 
    
         
             
                before(:each) do
         
     | 
| 
       19 
19 
     | 
    
         
             
                  Analytical::Console::Api.stub!(:new).and_return(@console = mock('console'))
         
     | 
| 
       20 
20 
     | 
    
         
             
                  Analytical::Google::Api.stub!(:new).and_return(@google = mock('google'))
         
     | 
| 
       21 
     | 
    
         
            -
                  Analytical::Clicky::Api.stub!(:new).and_return(@clicky = mock('clicky')) 
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
      
 21 
     | 
    
         
            +
                  Analytical::Clicky::Api.stub!(:new).and_return(@clicky = mock('clicky'))
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
       23 
23 
     | 
    
         
             
                  @api = Analytical::Api.new :modules=>[:console, :google]
         
     | 
| 
       24 
24 
     | 
    
         
             
                end
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
                describe '#track' do
         
     | 
| 
       27 
27 
     | 
    
         
             
                  it 'should store the #track command for each module api class' do
         
     | 
| 
       28 
28 
     | 
    
         
             
                    @api = Analytical::Api.new :modules=>[:console, :google, :clicky]
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
       30 
30 
     | 
    
         
             
                    @console.should_receive(:queue).with(:track, 'something', {:a=>1, :b=>2})
         
     | 
| 
       31 
31 
     | 
    
         
             
                    @clicky.should_receive(:queue).with(:track, 'something', {:a=>1, :b=>2})
         
     | 
| 
       32 
32 
     | 
    
         
             
                    @google.should_receive(:queue).with(:track, 'something', {:a=>1, :b=>2})
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
       34 
34 
     | 
    
         
             
                    @api.track('something', {:a=>1, :b=>2})
         
     | 
| 
       35 
35 
     | 
    
         
             
                  end
         
     | 
| 
       36 
36 
     | 
    
         
             
                end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
       38 
38 
     | 
    
         
             
                describe '#identify' do
         
     | 
| 
       39 
39 
     | 
    
         
             
                  it 'should store the #track command for each module api class' do
         
     | 
| 
       40 
40 
     | 
    
         
             
                    @api = Analytical::Api.new :modules=>[:console, :google, :clicky]
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
       42 
42 
     | 
    
         
             
                    @console.should_receive(:queue).with(:identify, 'something', {:a=>1, :b=>2})
         
     | 
| 
       43 
43 
     | 
    
         
             
                    @clicky.should_receive(:queue).with(:identify, 'something', {:a=>1, :b=>2})
         
     | 
| 
       44 
44 
     | 
    
         
             
                    @google.should_receive(:queue).with(:identify, 'something', {:a=>1, :b=>2})
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
       46 
46 
     | 
    
         
             
                    @api.identify('something', {:a=>1, :b=>2})
         
     | 
| 
       47 
47 
     | 
    
         
             
                  end
         
     | 
| 
       48 
48 
     | 
    
         
             
                end
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
       50 
50 
     | 
    
         
             
                describe '#now' do
         
     | 
| 
       51 
51 
     | 
    
         
             
                  it 'should call a command on each module and collect the results' do
         
     | 
| 
       52 
     | 
    
         
            -
                    @api = Analytical::Api.new :modules=>[:console, :google, :clicky] 
     | 
| 
      
 52 
     | 
    
         
            +
                    @api = Analytical::Api.new :modules=>[:console, :google, :clicky]
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
       54 
54 
     | 
    
         
             
                    @console.should_receive(:track).with('something', {:a=>1, :b=>2}).and_return('console track')
         
     | 
| 
       55 
55 
     | 
    
         
             
                    @clicky.should_receive(:track).with('something', {:a=>1, :b=>2}).and_return('clicky track')
         
     | 
| 
       56 
56 
     | 
    
         
             
                    @google.should_receive(:track).with('something', {:a=>1, :b=>2}).and_return('google track')
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
       58 
58 
     | 
    
         
             
                    @api.now.track('something', {:a=>1, :b=>2}).should == "console track\ngoogle track\nclicky track"
         
     | 
| 
       59 
59 
     | 
    
         
             
                  end
         
     | 
| 
       60 
60 
     | 
    
         
             
                end
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
       62 
62 
     | 
    
         
             
                describe 'when accessing a module by name' do
         
     | 
| 
       63 
63 
     | 
    
         
             
                  it 'should return the module api object' do
         
     | 
| 
       64 
64 
     | 
    
         
             
                    @api = Analytical::Api.new :modules=>[:console, :google, :clicky]
         
     | 
| 
         @@ -67,12 +67,14 @@ describe "Analytical::Api" do 
     | 
|
| 
       67 
67 
     | 
    
         
             
                    @api.google.should == @google
         
     | 
| 
       68 
68 
     | 
    
         
             
                  end
         
     | 
| 
       69 
69 
     | 
    
         
             
                end
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
       71 
71 
     | 
    
         
             
                describe 'gathering javascript' do
         
     | 
| 
       72 
72 
     | 
    
         
             
                  before(:each) do
         
     | 
| 
       73 
     | 
    
         
            -
                    @console.stub!(: 
     | 
| 
      
 73 
     | 
    
         
            +
                    @console.stub!(:init_location?).and_return(false)
         
     | 
| 
      
 74 
     | 
    
         
            +
                    @console.stub!(:initialized).and_return(false)
         
     | 
| 
       74 
75 
     | 
    
         
             
                    @console.stub!(:process_queued_commands).and_return([])
         
     | 
| 
       75 
     | 
    
         
            -
                    @google.stub!(: 
     | 
| 
      
 76 
     | 
    
         
            +
                    @google.stub!(:init_location?).and_return(false)
         
     | 
| 
      
 77 
     | 
    
         
            +
                    @google.stub!(:initialized).and_return(false)
         
     | 
| 
       76 
78 
     | 
    
         
             
                    @google.stub!(:process_queued_commands).and_return([])
         
     | 
| 
       77 
79 
     | 
    
         
             
                  end
         
     | 
| 
       78 
80 
     | 
    
         
             
                  describe '#head_javascript' do
         
     | 
| 
         @@ -91,19 +93,23 @@ describe "Analytical::Api" do 
     | 
|
| 
       91 
93 
     | 
    
         
             
                  end
         
     | 
| 
       92 
94 
     | 
    
         
             
                  describe '#body_append_javascript' do
         
     | 
| 
       93 
95 
     | 
    
         
             
                    it 'should return the javascript' do
         
     | 
| 
       94 
     | 
    
         
            -
                      @console.should_receive(:init_javascript).with(:body_append).and_return('console_c') 
     | 
| 
       95 
     | 
    
         
            -
                      @google.should_receive(:init_javascript).with(:body_append).and_return('google_c') 
     | 
| 
      
 96 
     | 
    
         
            +
                      @console.should_receive(:init_javascript).with(:body_append).and_return('console_c')
         
     | 
| 
      
 97 
     | 
    
         
            +
                      @google.should_receive(:init_javascript).with(:body_append).and_return('google_c')
         
     | 
| 
       96 
98 
     | 
    
         
             
                      @api.body_append_javascript.should == "console_c\ngoogle_c"
         
     | 
| 
       97 
99 
     | 
    
         
             
                    end
         
     | 
| 
       98 
100 
     | 
    
         
             
                  end
         
     | 
| 
       99 
101 
     | 
    
         
             
                  describe 'with stored commands' do
         
     | 
| 
       100 
102 
     | 
    
         
             
                    before(:each) do
         
     | 
| 
      
 103 
     | 
    
         
            +
                      @console.stub!(:init_location?).and_return(true)
         
     | 
| 
      
 104 
     | 
    
         
            +
                      @console.stub!(:initialized).and_return(false)
         
     | 
| 
       101 
105 
     | 
    
         
             
                      @console.stub!(:track).and_return('console track called')
         
     | 
| 
       102 
106 
     | 
    
         
             
                      @console.stub!(:queue)
         
     | 
| 
       103 
     | 
    
         
            -
                      @console.stub!(:process_queued_commands).and_return(['console track called']) 
     | 
| 
      
 107 
     | 
    
         
            +
                      @console.stub!(:process_queued_commands).and_return(['console track called'])
         
     | 
| 
      
 108 
     | 
    
         
            +
                      @google.stub!(:init_location?).and_return(false)
         
     | 
| 
      
 109 
     | 
    
         
            +
                      @google.stub!(:initialized).and_return(true)
         
     | 
| 
       104 
110 
     | 
    
         
             
                      @google.stub!(:track).and_return('google track called')
         
     | 
| 
       105 
     | 
    
         
            -
                      @google.stub!(:queue) 
     | 
| 
       106 
     | 
    
         
            -
                      @google.stub!(:process_queued_commands).and_return(['google track called']) 
     | 
| 
      
 111 
     | 
    
         
            +
                      @google.stub!(:queue)
         
     | 
| 
      
 112 
     | 
    
         
            +
                      @google.stub!(:process_queued_commands).and_return(['google track called'])
         
     | 
| 
       107 
113 
     | 
    
         
             
                      @api.track('something', {:a=>1, :b=>2})
         
     | 
| 
       108 
114 
     | 
    
         
             
                    end
         
     | 
| 
       109 
115 
     | 
    
         
             
                    describe '#body_prepend_javascript' do
         
     | 
| 
         @@ -0,0 +1,96 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Analytical::Base::Api do
         
     | 
| 
      
 4 
     | 
    
         
            +
              
         
     | 
| 
      
 5 
     | 
    
         
            +
              class BaseApiDummy
         
     | 
| 
      
 6 
     | 
    
         
            +
                include Analytical::Base::Api
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
              
         
     | 
| 
      
 9 
     | 
    
         
            +
              describe '#queue' do
         
     | 
| 
      
 10 
     | 
    
         
            +
                before(:each) do
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @api = BaseApiDummy.new(mock('parent'))
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @api.commands = [:a, :b, :c]
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
                describe 'with an identify command' do
         
     | 
| 
      
 15 
     | 
    
         
            +
                  it 'should store it at the head of the command list' do
         
     | 
| 
      
 16 
     | 
    
         
            +
                    @api.queue :identify, 'someone', {:some=>:args}
         
     | 
| 
      
 17 
     | 
    
         
            +
                    @api.commands.should == [[:identify, 'someone', {:some=>:args}], :a, :b, :c]
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
                describe 'with any other command' do
         
     | 
| 
      
 21 
     | 
    
         
            +
                  it 'should store it at the end of the command list' do
         
     | 
| 
      
 22 
     | 
    
         
            +
                    @api.queue :other, {:some=>:args}
         
     | 
| 
      
 23 
     | 
    
         
            +
                    @api.commands.should == [:a, :b, :c, [:other, {:some=>:args}]]
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              describe '#process_queued_commands' do
         
     | 
| 
      
 29 
     | 
    
         
            +
                before(:each) do
         
     | 
| 
      
 30 
     | 
    
         
            +
                  @api = BaseApiDummy.new(mock('parent'))
         
     | 
| 
      
 31 
     | 
    
         
            +
                  @api.commands = [[:a, 1, 2, 3], [:b, {:some=>:args}]]
         
     | 
| 
      
 32 
     | 
    
         
            +
                  @api.stub!(:a).and_return('a')
         
     | 
| 
      
 33 
     | 
    
         
            +
                  @api.stub!(:b).and_return('b')      
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
                it 'should send each of the args arrays in the command list' do
         
     | 
| 
      
 36 
     | 
    
         
            +
                  @api.should_receive(:a).with(1, 2, 3).and_return('a')
         
     | 
| 
      
 37 
     | 
    
         
            +
                  @api.should_receive(:b).with({:some=>:args}).and_return('b')
         
     | 
| 
      
 38 
     | 
    
         
            +
                  @api.process_queued_commands
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
                it 'should return the results as an array' do
         
     | 
| 
      
 41 
     | 
    
         
            +
                  @api.process_queued_commands.should == ['a', 'b']
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
                it 'should clear the commands list' do
         
     | 
| 
      
 44 
     | 
    
         
            +
                  @api.process_queued_commands
         
     | 
| 
      
 45 
     | 
    
         
            +
                  @api.commands == []
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
              end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
              describe '#init_location?' do
         
     | 
| 
      
 50 
     | 
    
         
            +
                before(:each) do
         
     | 
| 
      
 51 
     | 
    
         
            +
                  @api = BaseApiDummy.new(mock('parent'))
         
     | 
| 
      
 52 
     | 
    
         
            +
                  @api.instance_variable_set '@tracking_command_location', :my_location
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
                describe 'when the command location matches the init location' do
         
     | 
| 
      
 55 
     | 
    
         
            +
                  it 'should return true' do
         
     | 
| 
      
 56 
     | 
    
         
            +
                    @api.init_location?(:my_location).should be_true
         
     | 
| 
      
 57 
     | 
    
         
            +
                  end
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
      
 59 
     | 
    
         
            +
                describe 'when the command location does not match the init location' do
         
     | 
| 
      
 60 
     | 
    
         
            +
                  it 'should return false' do
         
     | 
| 
      
 61 
     | 
    
         
            +
                    @api.init_location?(:not_my_location).should be_false
         
     | 
| 
      
 62 
     | 
    
         
            +
                  end
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
              describe '#init_location' do
         
     | 
| 
      
 67 
     | 
    
         
            +
                before(:each) do
         
     | 
| 
      
 68 
     | 
    
         
            +
                  @api = BaseApiDummy.new(mock('parent'))
         
     | 
| 
      
 69 
     | 
    
         
            +
                end
         
     | 
| 
      
 70 
     | 
    
         
            +
                it 'should check for the init_location' do
         
     | 
| 
      
 71 
     | 
    
         
            +
                  @api.should_receive(:init_location?).with(:some_location).and_return(false)
         
     | 
| 
      
 72 
     | 
    
         
            +
                  @api.init_location(:some_location)
         
     | 
| 
      
 73 
     | 
    
         
            +
                end
         
     | 
| 
      
 74 
     | 
    
         
            +
                describe 'for a valid init location' do
         
     | 
| 
      
 75 
     | 
    
         
            +
                  before(:each) { @api.stub!(:init_location?).and_return(true) }      
         
     | 
| 
      
 76 
     | 
    
         
            +
                  it 'should set initialized to true' do
         
     | 
| 
      
 77 
     | 
    
         
            +
                    @api.init_location(:some_location)
         
     | 
| 
      
 78 
     | 
    
         
            +
                    @api.initialized.should be_true
         
     | 
| 
      
 79 
     | 
    
         
            +
                  end
         
     | 
| 
      
 80 
     | 
    
         
            +
                  it 'should yield to the block and return its result' do
         
     | 
| 
      
 81 
     | 
    
         
            +
                    @api.init_location(:some_location) do
         
     | 
| 
      
 82 
     | 
    
         
            +
                      'result from the block'
         
     | 
| 
      
 83 
     | 
    
         
            +
                    end.should == 'result from the block'
         
     | 
| 
      
 84 
     | 
    
         
            +
                  end
         
     | 
| 
      
 85 
     | 
    
         
            +
                end
         
     | 
| 
      
 86 
     | 
    
         
            +
                describe 'not for an init location' do
         
     | 
| 
      
 87 
     | 
    
         
            +
                  before(:each) do
         
     | 
| 
      
 88 
     | 
    
         
            +
                    @api.stub!(:init_location?).and_return(false)
         
     | 
| 
      
 89 
     | 
    
         
            +
                  end
         
     | 
| 
      
 90 
     | 
    
         
            +
                  it 'should return an empty string' do
         
     | 
| 
      
 91 
     | 
    
         
            +
                    @api.init_location(:not_my_init_location).should == ''
         
     | 
| 
      
 92 
     | 
    
         
            +
                  end
         
     | 
| 
      
 93 
     | 
    
         
            +
                end
         
     | 
| 
      
 94 
     | 
    
         
            +
              end
         
     | 
| 
      
 95 
     | 
    
         
            +
              
         
     | 
| 
      
 96 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -35,7 +35,7 @@ describe "Analytical::KissMetrics::Api" do 
     | 
|
| 
       35 
35 
     | 
    
         
             
              describe '#set' do
         
     | 
| 
       36 
36 
     | 
    
         
             
                it 'should return a js string' do
         
     | 
| 
       37 
37 
     | 
    
         
             
                  @api = Analytical::KissMetrics::Api.new @parent, {:key=>'abcdef'}
         
     | 
| 
       38 
     | 
    
         
            -
                  @api.set({:something=>'good', :b=>2}).should == "_kmq.push([\"set\", { 
     | 
| 
      
 38 
     | 
    
         
            +
                  @api.set({:something=>'good', :b=>2}).should == "_kmq.push([\"set\", #{{:something=>'good', :b=>2}.to_json}]);"
         
     | 
| 
       39 
39 
     | 
    
         
             
                end
         
     | 
| 
       40 
40 
     | 
    
         
             
              end
         
     | 
| 
       41 
41 
     | 
    
         
             
              describe '#init_javascript' do
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,13 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: analytical
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              hash:  
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 31
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 1
         
     | 
| 
       8 
     | 
    
         
            -
              -  
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 8 
     | 
    
         
            +
              - 2
         
     | 
| 
      
 9 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 1.2.0
         
     | 
| 
       11 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
13 
     | 
    
         
             
            - Joshua Krall
         
     | 
| 
         @@ -128,6 +128,7 @@ files: 
     | 
|
| 
       128 
128 
     | 
    
         
             
            - lib/analytical/kiss_metrics.rb
         
     | 
| 
       129 
129 
     | 
    
         
             
            - rails/init.rb
         
     | 
| 
       130 
130 
     | 
    
         
             
            - spec/analytical/api_spec.rb
         
     | 
| 
      
 131 
     | 
    
         
            +
            - spec/analytical/base_spec.rb
         
     | 
| 
       131 
132 
     | 
    
         
             
            - spec/analytical/bot_detector_spec.rb
         
     | 
| 
       132 
133 
     | 
    
         
             
            - spec/analytical/clicky_spec.rb
         
     | 
| 
       133 
134 
     | 
    
         
             
            - spec/analytical/google_spec.rb
         
     | 
| 
         @@ -172,6 +173,7 @@ specification_version: 3 
     | 
|
| 
       172 
173 
     | 
    
         
             
            summary: Gem for managing multiple analytics services in your rails app.
         
     | 
| 
       173 
174 
     | 
    
         
             
            test_files: 
         
     | 
| 
       174 
175 
     | 
    
         
             
            - spec/analytical/api_spec.rb
         
     | 
| 
      
 176 
     | 
    
         
            +
            - spec/analytical/base_spec.rb
         
     | 
| 
       175 
177 
     | 
    
         
             
            - spec/analytical/bot_detector_spec.rb
         
     | 
| 
       176 
178 
     | 
    
         
             
            - spec/analytical/clicky_spec.rb
         
     | 
| 
       177 
179 
     | 
    
         
             
            - spec/analytical/google_spec.rb
         
     |