abtest 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 +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: []
|