ab-experiments-rails 0.0.2 → 0.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0a9303ff4bc7bbf2d73a363f994ebcde22383b24
4
- data.tar.gz: 3818ee63aa67da86498e9dee1950d876eb3bece2
3
+ metadata.gz: 03331feb6715bdaad0b083ab3e2b10a6df99a4e1
4
+ data.tar.gz: c250865b4a653dcf7d5ac25f4323637c607dc5e7
5
5
  SHA512:
6
- metadata.gz: 77a6e56c4ff313128ded7da070b4ab0979c0fce447222d62e9a5538f8cb7a7547048d68aa6bd662ac22c0b04c3932aca69cf1f147ab4bb4a314419f14b89a0d8
7
- data.tar.gz: b8e5d72393715bd88adcbcfdb9147976890b8b95b950a8dbd23383f8d3616eaf234db95895135188e42edbcd996c7a102d0edf28f10036a5588622d2111436b5
6
+ metadata.gz: 1c5f8069b35dcb30985d0a67a5021c7f2b68656c0596e47a41a95885851609335157187ba5f5f7eeb13bdd79fa1ff7d05fcc8948a8c3946e25d93563060cb80c
7
+ data.tar.gz: 818829a76a36cae763b46349c367b2003bcc8769728971a80b8cfcf8a049a593899c6ce72ae273a640e4ad6bd6ab7c80160a759e67307a7ba664ada7e2d0d8e4
@@ -2,7 +2,7 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  ab-experiments-rails (0.0.2)
5
- rails (~> 4.2.7.1)
5
+ rails (>= 4.2.7.1)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -19,6 +19,16 @@ Put this content into head tag before google analytics load. (usually applicatio
19
19
  <%= yield :google_ab %>
20
20
  ```
21
21
 
22
+ ## Setup google experiments
23
+
24
+ Urls doesn't matters
25
+
26
+ ![Urls doesn't matters](https://github.com/hlidacky/ab-experiments-rails/raw/add-spinner/doc/urls_doesnt_matters.png)
27
+
28
+ For easy way testing enable - Distribute traffic evenly across all variants
29
+
30
+ ![Distribute traffic evenly](https://github.com/hlidacky/ab-experiments-rails/raw/add-spinner/doc/for_dev_distribute_traffic_evenly.png)
31
+
22
32
  ## Create your first ab test
23
33
 
24
34
  Let's apply ab testing on file like this app/views/pages/landing_page.html.erb
@@ -40,9 +50,12 @@ into landing_page.html.erb and modify it like this
40
50
  test_name: :landing_page_test, # your choice
41
51
  experiment_id: 'EXPERIMENT_ID', # copy/paste from google ab experiments
42
52
  experiment_enabled: true, # on/off your experiment. display only original content when false
43
- show_delay: 0.3 # flickering prevention if google choose variant. you can increase or decrease this number (seconds)
53
+ spinner_starts_after: 1, # spinner loader start after 1s
54
+ spinner_max_time: 5 # show original content after 5s seconds if javascript fails
44
55
  })
45
56
  %>
57
+
58
+ <%= render "ab_experiments_rails/loading" if settings.experiment_enabled? %>
46
59
  <div class="<%= "#{settings.original_class}" %> google_ab_show_later">
47
60
  <h1>Welcome and buy our services</h1>
48
61
  <button>
@@ -88,5 +101,3 @@ This is useful for development
88
101
 
89
102
 
90
103
 
91
-
92
-
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.files = `git ls-files -z`.split("\x0")
18
18
  s.test_files = Dir["test/**/*"]
19
19
 
20
- s.add_dependency "rails", "~> 4.2.7.1"
20
+ s.add_dependency "rails", ">= 4.2.7.1"
21
21
 
22
22
  s.add_development_dependency "bundler"
23
23
  s.add_development_dependency "sqlite3"
@@ -3,9 +3,12 @@
3
3
  test_name: :landing_page_test, # your choice
4
4
  experiment_id: 'EXPERIMENT_ID', # copy/paste from google ab experiments
5
5
  experiment_enabled: true, # on/off your experiment. display only original content when false
6
- show_delay: 0.3 # flickering prevention if google choose variant. you can increase or decrease this number (seconds)
6
+ spinner_starts_after: 1, # spinner loader start after 1s
7
+ spinner_max_time: 5 # show original content after 5s seconds if javascript fails
7
8
  })
8
9
  %>
10
+
11
+ <%= render "ab_experiments_rails/loading" if settings.experiment_enabled? %>
9
12
  <div class="<%= "#{settings.original_class}" %> google_ab_show_later">
10
13
  <% # original content... %>
11
14
  </div>
@@ -7,14 +7,37 @@
7
7
  .google_ab_hidden {
8
8
  display: none !important;
9
9
  }
10
- @keyframes google_ab_show_later_animation {
10
+
11
+ @keyframes google_ab_opacity_on {
11
12
  from {opacity: 0;}
12
13
  to {opacity: 1;}
13
14
  }
15
+
16
+ @keyframes google_ab_opacity_off {
17
+ from {opacity: 1;}
18
+ to {opacity: 0;}
19
+ }
20
+ /* show original if javascript fails */
14
21
  .google_ab_show_later {
15
22
  opacity: 1;
16
- animation-name: google_ab_show_later_animation;
17
- animation-duration: <%= "#{settings.show_delay}s" %>;
23
+ animation-name: google_ab_opacity_on;
24
+ animation-duration: <%= "#{settings.spinner_max_time}s" %>; /* delay before show */
25
+ animation-timing-function: steps(1);
26
+ -webkit-animation-timing-function: steps(1);
27
+ }
28
+
29
+ .google_ab_load_spinner {
30
+ opacity: 0;
31
+ animation-name: google_ab_opacity_off;
32
+ animation-duration: <%= "#{settings.spinner_max_time}s" %>; /* delay before hide */
33
+ animation-timing-function: steps(1);
34
+ -webkit-animation-timing-function: steps(1);
35
+ }
36
+
37
+ .google_ab_spinner_delayed {
38
+ opacity: 1;
39
+ animation-name: google_ab_opacity_on;
40
+ animation-duration: <%= "#{settings.spinner_starts_after}s" %>; /* delayed start */
18
41
  animation-timing-function: steps(1);
19
42
  -webkit-animation-timing-function: steps(1);
20
43
  }
@@ -28,25 +51,30 @@
28
51
  <% # Force display original / variant %>
29
52
  <% if params["#{settings.force_param_name}".to_sym].present? %>
30
53
  <% if params["#{settings.force_param_name}".to_sym].to_s == '1' %>
31
- <script>chosenVariation = 1</script>
54
+ <script>chosenVariation = <%= settings.choosen_variation_variant %>;</script>
32
55
  <% else %>
33
- <script>chosenVariation = 0</script>
56
+ <script>chosenVariation = <%= settings.choosen_variation_original %>;</script>
34
57
  <% end %>
35
58
  <% end %>
36
59
 
37
60
  <script>
38
- var pageVariations = [
39
- function() {
40
- // Original is always visible
41
- },
42
- function() {
43
- $('.<%= settings.original_class %>').hide();
44
- $('.<%= settings.variant_class %>').removeClass('google_ab_hidden');
45
- $('.<%= settings.variant_class %>').show();
46
- }
47
- ];
48
- $(document).on('ready', function () {
49
- pageVariations[chosenVariation].call();
50
- });
61
+ var pageVariations = [
62
+ function() {
63
+ $('.google_ab_load_spinner').hide();
64
+ $('.<%= settings.variant_class %>').hide();
65
+ $('.<%= settings.original_class %>').removeClass('google_ab_show_later');
66
+ $('.<%= settings.original_class %>').css('opacity', '1');
67
+ $('.<%= settings.original_class %>').show();
68
+ },
69
+ function() {
70
+ $('.google_ab_load_spinner').hide();
71
+ $('.<%= settings.original_class %>').hide();
72
+ $('.<%= settings.variant_class %>').removeClass('google_ab_hidden');
73
+ $('.<%= settings.variant_class %>').show();
74
+ }
75
+ ];
76
+ $(document).on('ready', function () {
77
+ pageVariations[chosenVariation].call(); // comment this line if you want see result without javascript
78
+ });
51
79
  </script>
52
80
  <% end %>
@@ -0,0 +1,7 @@
1
+ <div class="google_ab_load_spinner">
2
+ <div class="google_ab_spinner_delayed">
3
+ <%= image_tag "google_ab_spinner.gif" %>
4
+ <br />
5
+ Loading...
6
+ </div>
7
+ </div>
@@ -1,15 +1,17 @@
1
1
  module AbExperimentsRails
2
2
  class Settings
3
- attr_accessor :show_delay
3
+ attr_accessor :spinner_starts_after
4
+ attr_accessor :spinner_max_time
4
5
  attr_accessor :test_name
5
6
  attr_accessor :experiment_id
6
7
  attr_accessor :experiment_enabled
7
8
 
8
9
  def initialize(options = {})
9
- self.show_delay = options[:show_delay]
10
10
  self.test_name = options[:test_name]
11
11
  self.experiment_id = options[:experiment_id]
12
12
  self.experiment_enabled = options[:experiment_enabled]
13
+ self.spinner_starts_after = options[:spinner_starts_after]
14
+ self.spinner_max_time = options[:spinner_max_time]
13
15
  end
14
16
 
15
17
  def url
@@ -31,5 +33,13 @@ module AbExperimentsRails
31
33
  def force_param_name
32
34
  "#{test_name}_ab"
33
35
  end
36
+
37
+ def choosen_variation_original
38
+ 0
39
+ end
40
+
41
+ def choosen_variation_variant
42
+ 1
43
+ end
34
44
  end
35
45
  end
@@ -1,3 +1,3 @@
1
1
  module AbExperimentsRails
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -4,6 +4,8 @@ class AbExperimentsRailsGenerator < Rails::Generators::Base
4
4
  def copy_header
5
5
  copy_file '../../app/views/ab_experiments_rails/_header_content.html.erb', 'app/views/ab_experiments_rails/_header_content.html.erb'
6
6
  copy_file '../../app/views/ab_experiments_rails/_example.html.erb', 'app/views/ab_experiments_rails/_example.html.erb'
7
+ copy_file '../../app/views/ab_experiments_rails/_loading.html.erb', 'app/views/ab_experiments_rails/_loading.html.erb'
8
+ copy_file '../../app/assets/images/google_ab_spinner.gif', 'app/assets/images/google_ab_spinner.gif'
7
9
  end
8
10
 
9
11
  end
@@ -0,0 +1,20 @@
1
+ <%
2
+ settings = AbExperimentsRails::Settings.new({
3
+ test_name: :landing_page_test, # your choice
4
+ experiment_id: 'EXPERIMENT_ID', # copy/paste from google ab experiments
5
+ experiment_enabled: true, # on/off your experiment. display only original content when false
6
+ spinner_starts_after: 1, # spinner loader start after 1s
7
+ spinner_max_time: 5 # show original content after 5s seconds if javascript fails
8
+ })
9
+ %>
10
+
11
+ <%= render "ab_experiments_rails/loading" if settings.experiment_enabled? %>
12
+ <div class="<%= "#{settings.original_class}" %> google_ab_show_later">
13
+ <% # original content... %>
14
+ </div>
15
+ <% if settings.experiment_enabled? %>
16
+ <div class="<%= "#{settings.variant_class} "%> google_ab_hidden">
17
+ <% # variant content... %>
18
+ </div>
19
+ <%= render "ab_experiments_rails/header_content", settings: settings %>
20
+ <% end %>
@@ -7,14 +7,37 @@
7
7
  .google_ab_hidden {
8
8
  display: none !important;
9
9
  }
10
- @keyframes google_ab_show_later_animation {
10
+
11
+ @keyframes google_ab_opacity_on {
11
12
  from {opacity: 0;}
12
13
  to {opacity: 1;}
13
14
  }
15
+
16
+ @keyframes google_ab_opacity_off {
17
+ from {opacity: 1;}
18
+ to {opacity: 0;}
19
+ }
20
+ /* show original if javascript fails */
14
21
  .google_ab_show_later {
15
22
  opacity: 1;
16
- animation-name: google_ab_show_later_animation;
17
- animation-duration: <%= "#{settings.show_delay}s" %>;
23
+ animation-name: google_ab_opacity_on;
24
+ animation-duration: <%= "#{settings.spinner_max_time}s" %>; /* delay before show */
25
+ animation-timing-function: steps(1);
26
+ -webkit-animation-timing-function: steps(1);
27
+ }
28
+
29
+ .google_ab_load_spinner {
30
+ opacity: 0;
31
+ animation-name: google_ab_opacity_off;
32
+ animation-duration: <%= "#{settings.spinner_max_time}s" %>; /* delay before hide */
33
+ animation-timing-function: steps(1);
34
+ -webkit-animation-timing-function: steps(1);
35
+ }
36
+
37
+ .google_ab_spinner_delayed {
38
+ opacity: 1;
39
+ animation-name: google_ab_opacity_on;
40
+ animation-duration: <%= "#{settings.spinner_starts_after}s" %>; /* delayed start */
18
41
  animation-timing-function: steps(1);
19
42
  -webkit-animation-timing-function: steps(1);
20
43
  }
@@ -28,25 +51,30 @@
28
51
  <% # Force display original / variant %>
29
52
  <% if params["#{settings.force_param_name}".to_sym].present? %>
30
53
  <% if params["#{settings.force_param_name}".to_sym].to_s == '1' %>
31
- <script>chosenVariation = 1</script>
54
+ <script>chosenVariation = <%= settings.choosen_variation_variant %>;</script>
32
55
  <% else %>
33
- <script>chosenVariation = 0</script>
56
+ <script>chosenVariation = <%= settings.choosen_variation_original %>;</script>
34
57
  <% end %>
35
58
  <% end %>
36
59
 
37
60
  <script>
38
- var pageVariations = [
39
- function() {
40
- // Original is always visible
41
- },
42
- function() {
43
- $('.<%= settings.original_class %>').hide();
44
- $('.<%= settings.variant_class %>').removeClass('google_ab_hidden');
45
- $('.<%= settings.variant_class %>').show();
46
- }
47
- ];
48
- $(document).on('ready', function () {
49
- pageVariations[chosenVariation].call();
50
- });
61
+ var pageVariations = [
62
+ function() {
63
+ $('.google_ab_load_spinner').hide();
64
+ $('.<%= settings.variant_class %>').hide();
65
+ $('.<%= settings.original_class %>').removeClass('google_ab_show_later');
66
+ $('.<%= settings.original_class %>').css('opacity', '1');
67
+ $('.<%= settings.original_class %>').show();
68
+ },
69
+ function() {
70
+ $('.google_ab_load_spinner').hide();
71
+ $('.<%= settings.original_class %>').hide();
72
+ $('.<%= settings.variant_class %>').removeClass('google_ab_hidden');
73
+ $('.<%= settings.variant_class %>').show();
74
+ }
75
+ ];
76
+ $(document).on('ready', function () {
77
+ pageVariations[chosenVariation].call(); // comment this line if you want see result without javascript
78
+ });
51
79
  </script>
52
80
  <% end %>
@@ -0,0 +1,7 @@
1
+ <div class="google_ab_load_spinner">
2
+ <div class="google_ab_spinner_delayed">
3
+ <%= image_tag "google_ab_spinner.gif" %>
4
+ <br />
5
+ Loading...
6
+ </div>
7
+ </div>
@@ -3,9 +3,12 @@
3
3
  test_name: :landing_page_test, # your choice
4
4
  experiment_id: 'EXPERIMENT_ID', # copy/paste from google ab experiments
5
5
  experiment_enabled: true, # on/off your experiment. display only original content when false
6
- show_delay: 0.3 # flickering prevention if google choose variant. you can increase or decrease this number (seconds)
6
+ spinner_starts_after: 1, # spinner loader start after 1s
7
+ spinner_max_time: 5 # show original content after 5s seconds if javascript fails
7
8
  })
8
9
  %>
10
+
11
+ <%= render "ab_experiments_rails/loading" if settings.experiment_enabled? %>
9
12
  <div class="<%= "#{settings.original_class}" %> google_ab_show_later">
10
13
  <h1>Welcome and buy our services</h1>
11
14
  <button>
@@ -32,15 +32,6 @@ feature "Landing page" do
32
32
  page.must_have_content "Welcome and buy our services for half prices"
33
33
  end
34
34
 
35
- scenario "display original later" do
36
- AbExperimentsRails::Settings.any_instance.stubs(:show_delay).returns(3) # 3 seconds
37
- visit '/pages/landing_page?landing_page_test_ab=0'
38
- sleep 1
39
- assert_equal true, page.has_no_content?("Welcome and buy our services")
40
- sleep 5
41
- assert_equal true, page.has_content?("Welcome and buy our services")
42
- end
43
-
44
35
  scenario "disable experiment" do
45
36
  visit '/pages/landing_page?landing_page_test_ab=1'
46
37
  page.must_have_content "Welcome and buy our services for half prices"
@@ -49,4 +40,15 @@ feature "Landing page" do
49
40
  sleep 1
50
41
  assert_equal true, page.has_no_content?("Welcome and buy our services for half prices")
51
42
  end
43
+
44
+ scenario "show spinner and original content when javascript fails" do
45
+ AbExperimentsRails::Settings.any_instance.stubs(:choosen_variation_variant).returns('undefined')
46
+ visit '/pages/landing_page?landing_page_test_ab=1'
47
+ sleep 2
48
+ page.must_have_content "Loading"
49
+ sleep 6
50
+ page.must_have_content "Welcome and buy our services"
51
+ assert_equal true, page.has_no_content?("for half prices")
52
+ end
53
+
52
54
  end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ab-experiments-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ondrej Mudroncik
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-01 00:00:00.000000000 Z
11
+ date: 2017-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 4.2.7.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 4.2.7.1
27
27
  - !ruby/object:Gem::Dependency
@@ -67,8 +67,12 @@ files:
67
67
  - README.md
68
68
  - Rakefile
69
69
  - ab_experiments_rails.gemspec
70
+ - app/assets/images/google_ab_spinner.gif
70
71
  - app/views/ab_experiments_rails/_example.html.erb
71
72
  - app/views/ab_experiments_rails/_header_content.html.erb
73
+ - app/views/ab_experiments_rails/_loading.html.erb
74
+ - doc/for_dev_distribute_traffic_evenly.png
75
+ - doc/urls_doesnt_matters.png
72
76
  - lib/ab_experiments_rails.rb
73
77
  - lib/ab_experiments_rails/settings.rb
74
78
  - lib/ab_experiments_rails/version.rb
@@ -78,6 +82,7 @@ files:
78
82
  - test/dummy/README.rdoc
79
83
  - test/dummy/Rakefile
80
84
  - test/dummy/app/assets/images/.keep
85
+ - test/dummy/app/assets/images/google_ab_spinner.gif
81
86
  - test/dummy/app/assets/javascripts/application.js
82
87
  - test/dummy/app/assets/stylesheets/application.css
83
88
  - test/dummy/app/controllers/application_controller.rb
@@ -87,7 +92,9 @@ files:
87
92
  - test/dummy/app/mailers/.keep
88
93
  - test/dummy/app/models/.keep
89
94
  - test/dummy/app/models/concerns/.keep
95
+ - test/dummy/app/views/ab_experiments_rails/_example.html.erb
90
96
  - test/dummy/app/views/ab_experiments_rails/_header_content.html.erb
97
+ - test/dummy/app/views/ab_experiments_rails/_loading.html.erb
91
98
  - test/dummy/app/views/layouts/application.html.erb
92
99
  - test/dummy/app/views/pages/landing_page.html.erb
93
100
  - test/dummy/bin/bundle
@@ -118,12 +125,63 @@ files:
118
125
  - test/dummy/db/test.sqlite3
119
126
  - test/dummy/lib/assets/.keep
120
127
  - test/dummy/log/.keep
128
+ - test/dummy/log/development.log
129
+ - test/dummy/log/test.log
121
130
  - test/dummy/public/404.html
122
131
  - test/dummy/public/422.html
123
132
  - test/dummy/public/500.html
124
133
  - test/dummy/public/favicon.ico
125
134
  - test/dummy/public/js_mocks/cx_api_mock.js
126
135
  - test/dummy/public/js_mocks/cx_api_mock_variant.js
136
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/-w/-wKgnr8bMvZx_GEAgz6JZGNX_m0V1qqa6siL60ZRwzY.cache
137
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/0v/0v9IOgqfb5znmj8mgG3PdrcJIrDFce_j1ZHoVgG86dw.cache
138
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/2U/2UJp6VB2Yo8PyXWY182ajmAC7QBGNOTkPl-57mXTbQc.cache
139
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/2o/2oWW2x-knYJDP4L27WusTzF2wIrOpSCinJ3mz6xhQPg.cache
140
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/5L/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache
141
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/7t/7tXZNlxmo_BQT8JeMsuY79f_gkSYD1nFLbIOAoQIGFg.cache
142
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/8-/8-5A-qBQjr7EhaH8AeaBTEWl0kU1AnUgsRqW4qtVZVA.cache
143
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/8k/8k6upZmgZzemL0hRAivSj9s7pynWc9fx9l5BDnR8_Mo.cache
144
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/9K/9KdUMsvUR4nPQfVQoTDVNuzcI7shbo6GkNdBZy4Tqag.cache
145
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/AD/AD_i657YGWq5IQT7MvFSvhhckqz_taVEvIpVN40SNLU.cache
146
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Ap/Ap6yoNYWQPz_otHZtBcp3VlRytJyTXniI7l74UuqRn8.cache
147
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/D6/D6TVdjBZkL8A6aaG3rqZn9Ng4FXF4lz3uudSbUjJxgE.cache
148
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/D7/D7etffoc5OkXQanfHP3fNMgvjTG63wVx7aK8S9jm_j0.cache
149
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/DS/DSOLSc6A5RVSmvM415eEWAWG_AgOvZcLZOXQjsXyWQA.cache
150
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/FO/FOsOpo_PmJYreirVdCkavDNuGuIM-TQRuHeq2Z9_Uv0.cache
151
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Fa/FaNa5bBQDh8AEKpiYoXqO-MONf2845527x1FwxXqf60.cache
152
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Jf/Jf0CZpRLkCFnRhf_N0ICwVvpH4iWY2NM_pnZylvIXog.cache
153
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/K_/K_LWPbBCmnmxoXCc20wX6nEamUdyV73EGjZpbUYYH4c.cache
154
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/LI/LIIXSKCVQmM13s9RcGPXZsAvKMQvEFKbs1YElooyYFQ.cache
155
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Lf/LfM7Jzxn31duxru9mhNfnCPCzPq9Wto--ojG0DGYT2M.cache
156
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/N9/N9rRw8hg06lNOCQIbRE0uKCj5-0bcLHdTZJPsGQnhHg.cache
157
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/OC/OC7uwvWeai28kDl5o_I1StdcSAkkhQDa9bsVew-FBsU.cache
158
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/OI/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache
159
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/PU/PU-VphPPdmRs3mbCAzqQiHQplEkG5vXO52p2rA8uExk.cache
160
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Pg/PgU0ZfNgnJ3K-CwXk7u2JZUknvFJMoYq2cN78VYguzg.cache
161
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Pv/PvpKimD8XwKCfcT2oyrgihPD1hfigDVBI3Tra7plGcE.cache
162
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Qk/Qk3ALQPm1-3jkG-zuE-A4PdjSGUsOvqeUK80ryL-Zg4.cache
163
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Rn/RnfH0rvksQWVRqYDF-OaS1lkhn_rmXIhn9VrKJ1ORXA.cache
164
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Sd/SdrpYzYpv0qnRY1tk4jI1msYkBzDpnK5zLBC5XHAcxg.cache
165
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/a_/a_N86EnNZ6CKk3hUbyMX1oDSxXzWQVVUiM9HOVNUO-E.cache
166
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/c6/c6fRpY3WAWyDqEu9U62bUi-INpfdLAkL6eKIFrknBus.cache
167
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/fq/fqIxDgDgkdX1wsej_FAq5hyQLWtp9XE-UxI-OkNiIXY.cache
168
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/gK/gKIY3nzltnR88XhKEiZ5A9rNFPkOaf4088QLEs2uuhI.cache
169
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/jh/jhbQKZNVvKQ3A9jIJXg_NKePWjaBWURCztOEIBuUVIA.cache
170
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/mV/mVI8EgL_96ohv4p8-5cp3jfx8MCNInxJW1JliZoolFs.cache
171
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/nh/nhTtrDe7X3blz41I1YpvSM1RPllvsa8cXE-xYAP-ULQ.cache
172
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/nk/nkW0_Eh9_fM6zaLURw1Y7Z4GDlhqKX9pJINacM9dufw.cache
173
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/nr/nrlHoeMDRiA0cCCcH4qhXGwZjscLyvbniJVpZolydec.cache
174
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/o2/o2QTxs4H4MtgbNFRpJkzmmvWd-AGOz44uanUMobtvdo.cache
175
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/oE/oEVinLjDwxomNhlsE6_lbxolDQI9Ko9918zyjuLsk84.cache
176
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/q2/q2JKAQA29mbur-GquKo_ceeDJAlCyZr-hA4scN8hYc8.cache
177
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/sC/sCq4ZHlYQgdHsaBheikVqQkjRXo9zt2oalGHKNDGm4M.cache
178
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/te/teJYJXJrOGhTswu4KYlg6qHRazeKo7ooC5fRPs1oQjE.cache
179
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/tk/tklPdC2vRwkR1g4wc5HzfRY5Ao6DbHvmPczfrjJrZWk.cache
180
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/u7/u71Rv7wEoX2UxRSGBuc2O2yeR2e6pajRMmA_gECm8SU.cache
181
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/us/usg_JWBeAQviHzKcs5RYQApw4rJDMvPTCtkClO9riMY.cache
182
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/vg/vgmNyjWAF3pQ8jWRfJO7-_udzSDMgmXxbOYV93sE9PM.cache
183
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/xN/xNmJNrz_aYsA77sY2R5a5nkRTRYbJodu4YKgw0HyyfE.cache
184
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/zb/zbl6UDG6rc8SUaNhL0SWzZFV09R0X-fxFXDvpaWFwpc.cache
127
185
  - test/landing_page_test.rb
128
186
  - test/test_helper.rb
129
187
  homepage: https://github.com/hlidacky/ab-experiments-rails
@@ -152,12 +210,15 @@ specification_version: 4
152
210
  summary: Google ab experiments wrap
153
211
  test_files:
154
212
  - test/ab_experiments_rails_test.rb
213
+ - test/dummy/app/assets/images/google_ab_spinner.gif
155
214
  - test/dummy/app/assets/javascripts/application.js
156
215
  - test/dummy/app/assets/stylesheets/application.css
157
216
  - test/dummy/app/controllers/application_controller.rb
158
217
  - test/dummy/app/controllers/pages_controller.rb
159
218
  - test/dummy/app/helpers/application_helper.rb
219
+ - test/dummy/app/views/ab_experiments_rails/_example.html.erb
160
220
  - test/dummy/app/views/ab_experiments_rails/_header_content.html.erb
221
+ - test/dummy/app/views/ab_experiments_rails/_loading.html.erb
161
222
  - test/dummy/app/views/layouts/application.html.erb
162
223
  - test/dummy/app/views/pages/landing_page.html.erb
163
224
  - test/dummy/bin/bundle
@@ -186,6 +247,8 @@ test_files:
186
247
  - test/dummy/db/development.sqlite3
187
248
  - test/dummy/db/schema.rb
188
249
  - test/dummy/db/test.sqlite3
250
+ - test/dummy/log/development.log
251
+ - test/dummy/log/test.log
189
252
  - test/dummy/public/404.html
190
253
  - test/dummy/public/422.html
191
254
  - test/dummy/public/500.html
@@ -194,5 +257,54 @@ test_files:
194
257
  - test/dummy/public/js_mocks/cx_api_mock_variant.js
195
258
  - test/dummy/Rakefile
196
259
  - test/dummy/README.rdoc
260
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/-w/-wKgnr8bMvZx_GEAgz6JZGNX_m0V1qqa6siL60ZRwzY.cache
261
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/0v/0v9IOgqfb5znmj8mgG3PdrcJIrDFce_j1ZHoVgG86dw.cache
262
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/2o/2oWW2x-knYJDP4L27WusTzF2wIrOpSCinJ3mz6xhQPg.cache
263
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/2U/2UJp6VB2Yo8PyXWY182ajmAC7QBGNOTkPl-57mXTbQc.cache
264
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/5L/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache
265
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/7t/7tXZNlxmo_BQT8JeMsuY79f_gkSYD1nFLbIOAoQIGFg.cache
266
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/8-/8-5A-qBQjr7EhaH8AeaBTEWl0kU1AnUgsRqW4qtVZVA.cache
267
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/8k/8k6upZmgZzemL0hRAivSj9s7pynWc9fx9l5BDnR8_Mo.cache
268
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/9K/9KdUMsvUR4nPQfVQoTDVNuzcI7shbo6GkNdBZy4Tqag.cache
269
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/a_/a_N86EnNZ6CKk3hUbyMX1oDSxXzWQVVUiM9HOVNUO-E.cache
270
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/AD/AD_i657YGWq5IQT7MvFSvhhckqz_taVEvIpVN40SNLU.cache
271
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Ap/Ap6yoNYWQPz_otHZtBcp3VlRytJyTXniI7l74UuqRn8.cache
272
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/c6/c6fRpY3WAWyDqEu9U62bUi-INpfdLAkL6eKIFrknBus.cache
273
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/D6/D6TVdjBZkL8A6aaG3rqZn9Ng4FXF4lz3uudSbUjJxgE.cache
274
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/D7/D7etffoc5OkXQanfHP3fNMgvjTG63wVx7aK8S9jm_j0.cache
275
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/DS/DSOLSc6A5RVSmvM415eEWAWG_AgOvZcLZOXQjsXyWQA.cache
276
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Fa/FaNa5bBQDh8AEKpiYoXqO-MONf2845527x1FwxXqf60.cache
277
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/FO/FOsOpo_PmJYreirVdCkavDNuGuIM-TQRuHeq2Z9_Uv0.cache
278
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/fq/fqIxDgDgkdX1wsej_FAq5hyQLWtp9XE-UxI-OkNiIXY.cache
279
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/gK/gKIY3nzltnR88XhKEiZ5A9rNFPkOaf4088QLEs2uuhI.cache
280
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Jf/Jf0CZpRLkCFnRhf_N0ICwVvpH4iWY2NM_pnZylvIXog.cache
281
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/jh/jhbQKZNVvKQ3A9jIJXg_NKePWjaBWURCztOEIBuUVIA.cache
282
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/K_/K_LWPbBCmnmxoXCc20wX6nEamUdyV73EGjZpbUYYH4c.cache
283
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Lf/LfM7Jzxn31duxru9mhNfnCPCzPq9Wto--ojG0DGYT2M.cache
284
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/LI/LIIXSKCVQmM13s9RcGPXZsAvKMQvEFKbs1YElooyYFQ.cache
285
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/mV/mVI8EgL_96ohv4p8-5cp3jfx8MCNInxJW1JliZoolFs.cache
286
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/N9/N9rRw8hg06lNOCQIbRE0uKCj5-0bcLHdTZJPsGQnhHg.cache
287
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/nh/nhTtrDe7X3blz41I1YpvSM1RPllvsa8cXE-xYAP-ULQ.cache
288
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/nk/nkW0_Eh9_fM6zaLURw1Y7Z4GDlhqKX9pJINacM9dufw.cache
289
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/nr/nrlHoeMDRiA0cCCcH4qhXGwZjscLyvbniJVpZolydec.cache
290
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/o2/o2QTxs4H4MtgbNFRpJkzmmvWd-AGOz44uanUMobtvdo.cache
291
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/OC/OC7uwvWeai28kDl5o_I1StdcSAkkhQDa9bsVew-FBsU.cache
292
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/oE/oEVinLjDwxomNhlsE6_lbxolDQI9Ko9918zyjuLsk84.cache
293
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/OI/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache
294
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Pg/PgU0ZfNgnJ3K-CwXk7u2JZUknvFJMoYq2cN78VYguzg.cache
295
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/PU/PU-VphPPdmRs3mbCAzqQiHQplEkG5vXO52p2rA8uExk.cache
296
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Pv/PvpKimD8XwKCfcT2oyrgihPD1hfigDVBI3Tra7plGcE.cache
297
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/q2/q2JKAQA29mbur-GquKo_ceeDJAlCyZr-hA4scN8hYc8.cache
298
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Qk/Qk3ALQPm1-3jkG-zuE-A4PdjSGUsOvqeUK80ryL-Zg4.cache
299
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Rn/RnfH0rvksQWVRqYDF-OaS1lkhn_rmXIhn9VrKJ1ORXA.cache
300
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/sC/sCq4ZHlYQgdHsaBheikVqQkjRXo9zt2oalGHKNDGm4M.cache
301
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Sd/SdrpYzYpv0qnRY1tk4jI1msYkBzDpnK5zLBC5XHAcxg.cache
302
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/te/teJYJXJrOGhTswu4KYlg6qHRazeKo7ooC5fRPs1oQjE.cache
303
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/tk/tklPdC2vRwkR1g4wc5HzfRY5Ao6DbHvmPczfrjJrZWk.cache
304
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/u7/u71Rv7wEoX2UxRSGBuc2O2yeR2e6pajRMmA_gECm8SU.cache
305
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/us/usg_JWBeAQviHzKcs5RYQApw4rJDMvPTCtkClO9riMY.cache
306
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/vg/vgmNyjWAF3pQ8jWRfJO7-_udzSDMgmXxbOYV93sE9PM.cache
307
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/xN/xNmJNrz_aYsA77sY2R5a5nkRTRYbJodu4YKgw0HyyfE.cache
308
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/zb/zbl6UDG6rc8SUaNhL0SWzZFV09R0X-fxFXDvpaWFwpc.cache
197
309
  - test/landing_page_test.rb
198
310
  - test/test_helper.rb