abtest 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/abtest.gemspec +2 -0
- data/lib/abtest.rb +0 -1
- data/lib/abtest/processor.rb +1 -0
- data/lib/abtest/railtie.rb +4 -0
- data/lib/abtest/registry.rb +9 -8
- data/lib/abtest/tasks/experiments.rake +39 -0
- data/lib/abtest/tasks/templates/initializer.erb +9 -0
- data/lib/abtest/version.rb +1 -1
- metadata +25 -21
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: cb40965c5504d6350cbf6bf7da5b76c9f0f47f6e
|
4
|
+
data.tar.gz: 978cf2b5d26878668c44e239d084da7aa87c30eb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1389a6c543d37030317a94a2f66a4158272403d92eed9ab7a44b658a10232ea2a4b9b7ff778541f5ca2dfd37e104e2dca76010f44ef657dc8064b926d7a3d435
|
7
|
+
data.tar.gz: 83d24beda283ba5afc6f03bfc869772c51b13ce045f2e24a717a3e11948331f4e4bb0f19e77b1ac6f47748734bc02d1fda060993168324957734e07bdde2dbfb
|
data/abtest.gemspec
CHANGED
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.add_dependency "rails"
|
22
|
+
|
21
23
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
24
|
spec.add_development_dependency "rake"
|
23
25
|
end
|
data/lib/abtest.rb
CHANGED
data/lib/abtest/processor.rb
CHANGED
data/lib/abtest/railtie.rb
CHANGED
@@ -2,6 +2,10 @@ require 'rails'
|
|
2
2
|
|
3
3
|
module Abtest
|
4
4
|
class Railtie < ::Rails::Railtie
|
5
|
+
rake_tasks do
|
6
|
+
Dir[File.join(File.dirname(__FILE__),'tasks/*.rake')].each { |f| load f }
|
7
|
+
end
|
8
|
+
|
5
9
|
initializer "abtest.set_config", :after => 'bootstrap_hook' do
|
6
10
|
config.abtest = ActiveSupport::OrderedOptions.new
|
7
11
|
config.abtest.registered_tests = Set.new
|
data/lib/abtest/registry.rb
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
require "rails"
|
2
2
|
|
3
3
|
module Abtest
|
4
|
-
# Register a test. This method takes the
|
5
|
-
# where your view overrides are located
|
6
|
-
#
|
7
|
-
#
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
# Register a test. This method takes the following parameters:
|
5
|
+
# view_path: View prefix of the directory where your view overrides are located
|
6
|
+
# test: A lambda used to determine whether or not to activate this test. The provided
|
7
|
+
# lambda must return a truthy value for the test to be activated and accept a request object.
|
8
|
+
# process (optional): Lambda to run in the case of a test being activated. Will be passed the controller object.
|
9
|
+
def self.register_test(view_path, test, process = nil)
|
10
|
+
# If this path is already in the configured paths, remove it.
|
11
|
+
# This is used mainly for engine based tests.
|
11
12
|
ActionController::Base.view_paths = ActionController::Base.view_paths.reject {|path| path.to_path == view_path }
|
12
|
-
abtest_config.registered_tests.add({prefix: view_path, check:
|
13
|
+
abtest_config.registered_tests.add({prefix: view_path, check: test, process: process})
|
13
14
|
end
|
14
15
|
|
15
16
|
def self.abtest_config
|
@@ -0,0 +1,39 @@
|
|
1
|
+
namespace :abtest do
|
2
|
+
desc "Create a new experiment scaffold. Experiment name is a required arg. (rake abtest:add_experiment[name])"
|
3
|
+
task :add_experiment, [:name] => :environment do |t, args|
|
4
|
+
name = args[:name]
|
5
|
+
puts "Experiment name is required" and return if name.nil?
|
6
|
+
|
7
|
+
# Check to see if we have a tests directory
|
8
|
+
Dir.mkdir("#{Rails.root}/app/views/tests") unless Dir.exists?("#{Rails.root}/app/views/tests")
|
9
|
+
|
10
|
+
# Create a folder for this experiment
|
11
|
+
experiment_path = "#{Rails.root}/app/views/tests/#{args[:name]}"
|
12
|
+
Dir.mkdir(experiment_path) unless Dir.exists?(experiment_path)
|
13
|
+
|
14
|
+
# Create a new initializer file if it doesn't exist already
|
15
|
+
initializer_path = "#{Rails.root}/config/initializers/abtest.rb"
|
16
|
+
FileUtils.touch(initializer_path) unless File.exists?(initializer_path)
|
17
|
+
|
18
|
+
# Add template initializer
|
19
|
+
template = File.read("#{File.dirname(__FILE__)}/templates/initializer.erb")
|
20
|
+
renderer = ERB.new(template)
|
21
|
+
result = renderer.result(binding)
|
22
|
+
|
23
|
+
# Append initializer code to end of file
|
24
|
+
File.open(initializer_path, 'a') { |f| f.write(result) }
|
25
|
+
|
26
|
+
puts "Please edit #{initializer_path} to configure experiment."
|
27
|
+
end
|
28
|
+
|
29
|
+
desc "Delete all experiments"
|
30
|
+
task :delete_experiments => :environment do
|
31
|
+
# Remove tests directory
|
32
|
+
FileUtils.rm_rf("#{Rails.root}/app/views/tests") if Dir.exists?("#{Rails.root}/app/views/tests")
|
33
|
+
|
34
|
+
# Remove initializer
|
35
|
+
FileUtils.rm("#{Rails.root}/config/initializers/abtest.rb") if Dir.exists?("#{Rails.root}/config/initializers/abtest.rb")
|
36
|
+
|
37
|
+
puts "All tests removed"
|
38
|
+
end
|
39
|
+
end
|
data/lib/abtest/version.rb
CHANGED
metadata
CHANGED
@@ -1,20 +1,32 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abtest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Steve Saarinen
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-09 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
14
27
|
- !ruby/object:Gem::Dependency
|
15
28
|
name: bundler
|
16
29
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
30
|
requirements:
|
19
31
|
- - ~>
|
20
32
|
- !ruby/object:Gem::Version
|
@@ -22,7 +34,6 @@ dependencies:
|
|
22
34
|
type: :development
|
23
35
|
prerelease: false
|
24
36
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
37
|
requirements:
|
27
38
|
- - ~>
|
28
39
|
- !ruby/object:Gem::Version
|
@@ -30,17 +41,15 @@ dependencies:
|
|
30
41
|
- !ruby/object:Gem::Dependency
|
31
42
|
name: rake
|
32
43
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
44
|
requirements:
|
35
|
-
- -
|
45
|
+
- - '>='
|
36
46
|
- !ruby/object:Gem::Version
|
37
47
|
version: '0'
|
38
48
|
type: :development
|
39
49
|
prerelease: false
|
40
50
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
51
|
requirements:
|
43
|
-
- -
|
52
|
+
- - '>='
|
44
53
|
- !ruby/object:Gem::Version
|
45
54
|
version: '0'
|
46
55
|
description: Railtie base to enable engine baset AB test modules
|
@@ -62,37 +71,32 @@ files:
|
|
62
71
|
- lib/abtest/processor.rb
|
63
72
|
- lib/abtest/railtie.rb
|
64
73
|
- lib/abtest/registry.rb
|
74
|
+
- lib/abtest/tasks/experiments.rake
|
75
|
+
- lib/abtest/tasks/templates/initializer.erb
|
65
76
|
- lib/abtest/version.rb
|
66
77
|
homepage: http://www.whitepages.com
|
67
78
|
licenses:
|
68
79
|
- MIT
|
80
|
+
metadata: {}
|
69
81
|
post_install_message:
|
70
82
|
rdoc_options: []
|
71
83
|
require_paths:
|
72
84
|
- lib
|
73
85
|
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
86
|
requirements:
|
76
|
-
- -
|
87
|
+
- - '>='
|
77
88
|
- !ruby/object:Gem::Version
|
78
89
|
version: '0'
|
79
|
-
segments:
|
80
|
-
- 0
|
81
|
-
hash: -3468350091403392005
|
82
90
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
91
|
requirements:
|
85
|
-
- -
|
92
|
+
- - '>='
|
86
93
|
- !ruby/object:Gem::Version
|
87
94
|
version: '0'
|
88
|
-
segments:
|
89
|
-
- 0
|
90
|
-
hash: -3468350091403392005
|
91
95
|
requirements: []
|
92
96
|
rubyforge_project:
|
93
|
-
rubygems_version: 1.
|
97
|
+
rubygems_version: 2.1.11
|
94
98
|
signing_key:
|
95
|
-
specification_version:
|
99
|
+
specification_version: 4
|
96
100
|
summary: Manages registered AB test engines and provides before_filter to dynamically
|
97
101
|
add load paths for enabled tests
|
98
102
|
test_files: []
|