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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +14 -3
- data/ab_experiments_rails.gemspec +1 -1
- data/app/assets/images/google_ab_spinner.gif +0 -0
- data/app/views/ab_experiments_rails/_example.html.erb +4 -1
- data/app/views/ab_experiments_rails/_header_content.html.erb +46 -18
- data/app/views/ab_experiments_rails/_loading.html.erb +7 -0
- data/doc/for_dev_distribute_traffic_evenly.png +0 -0
- data/doc/urls_doesnt_matters.png +0 -0
- data/lib/ab_experiments_rails/settings.rb +12 -2
- data/lib/ab_experiments_rails/version.rb +1 -1
- data/lib/generators/ab_experiments_rails_generator.rb +2 -0
- data/test/dummy/app/assets/images/google_ab_spinner.gif +0 -0
- data/test/dummy/app/views/ab_experiments_rails/_example.html.erb +20 -0
- data/test/dummy/app/views/ab_experiments_rails/_header_content.html.erb +46 -18
- data/test/dummy/app/views/ab_experiments_rails/_loading.html.erb +7 -0
- data/test/dummy/app/views/pages/landing_page.html.erb +4 -1
- data/test/landing_page_test.rb +11 -9
- metadata +116 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03331feb6715bdaad0b083ab3e2b10a6df99a4e1
|
4
|
+
data.tar.gz: c250865b4a653dcf7d5ac25f4323637c607dc5e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c5f8069b35dcb30985d0a67a5021c7f2b68656c0596e47a41a95885851609335157187ba5f5f7eeb13bdd79fa1ff7d05fcc8948a8c3946e25d93563060cb80c
|
7
|
+
data.tar.gz: 818829a76a36cae763b46349c367b2003bcc8769728971a80b8cfcf8a049a593899c6ce72ae273a640e4ad6bd6ab7c80160a759e67307a7ba664ada7e2d0d8e4
|
data/Gemfile.lock
CHANGED
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
|
+

|
27
|
+
|
28
|
+
For easy way testing enable - Distribute traffic evenly across all variants
|
29
|
+
|
30
|
+

|
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
|
-
|
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", "
|
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"
|
Binary file
|
@@ -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
|
-
|
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
|
-
|
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:
|
17
|
-
animation-duration: <%= "#{settings.
|
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 =
|
54
|
+
<script>chosenVariation = <%= settings.choosen_variation_variant %>;</script>
|
32
55
|
<% else %>
|
33
|
-
<script>chosenVariation =
|
56
|
+
<script>chosenVariation = <%= settings.choosen_variation_original %>;</script>
|
34
57
|
<% end %>
|
35
58
|
<% end %>
|
36
59
|
|
37
60
|
<script>
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
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 %>
|
Binary file
|
Binary file
|
@@ -1,15 +1,17 @@
|
|
1
1
|
module AbExperimentsRails
|
2
2
|
class Settings
|
3
|
-
attr_accessor :
|
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
|
@@ -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
|
Binary file
|
@@ -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
|
-
|
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:
|
17
|
-
animation-duration: <%= "#{settings.
|
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 =
|
54
|
+
<script>chosenVariation = <%= settings.choosen_variation_variant %>;</script>
|
32
55
|
<% else %>
|
33
|
-
<script>chosenVariation =
|
56
|
+
<script>chosenVariation = <%= settings.choosen_variation_original %>;</script>
|
34
57
|
<% end %>
|
35
58
|
<% end %>
|
36
59
|
|
37
60
|
<script>
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
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 %>
|
@@ -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
|
-
|
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>
|
data/test/landing_page_test.rb
CHANGED
@@ -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.
|
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-
|
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
|