splut 0.0.0 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/generators/splut/install_generator.rb +27 -0
- data/lib/generators/templates/create_splut_tables.rb +56 -0
- data/lib/railtie.rb +7 -0
- data/lib/splut/models/experiment.rb +25 -0
- data/lib/splut/models/impression.rb +24 -0
- data/lib/splut/models/segement_participant.rb +22 -0
- data/lib/splut/models/variation.rb +14 -0
- data/lib/splut.rb +36 -0
- data/lib/version.rb +3 -0
- metadata +25 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63f7aee30ef4c49e78226f4adf3fa3b81f80cc6d530210588915e1a8686cb660
|
4
|
+
data.tar.gz: a1e4eea2407a15836f7e85070ebd8bffaafcdfc33a163ed1a3d5b38fed4fe27f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3bab50c05a714608459eb4e9438d002a1d708f54ef3f612938fe0d3b1ef27ed9f7508030eda6066259d8573a67e617fc8d91080741e43cf533a82ab8796d3020
|
7
|
+
data.tar.gz: 2ed3375c2b39139cd73c08381b1d10456a40f8f2a161caa3a8b0e179b5dc6d93f88749309cde9a58f75da56d89c1e0c2ec31ae699397b9d24b5f0a69bd28cf3b
|
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
require 'rails/generators'
|
3
|
+
|
4
|
+
module Splut
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
include Rails::Generators::Migration
|
7
|
+
|
8
|
+
desc "Creates a Splut Initializer"
|
9
|
+
|
10
|
+
source_root File.expand_path('../templates', __dir__)
|
11
|
+
|
12
|
+
def self.next_migration_number(path)
|
13
|
+
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
14
|
+
end
|
15
|
+
|
16
|
+
desc "Creates an initializer for Splut and copy files to your application."
|
17
|
+
def create_splut_migration
|
18
|
+
migration_template "create_splut_tables.rb", "db/migrate/create_splut_tables.rb"
|
19
|
+
end
|
20
|
+
|
21
|
+
def migration_version
|
22
|
+
"[#{ActiveRecord::Migration.current_version}]" if ActiveRecord::Migration.respond_to?(:current_version)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
class CreateSplutTables < ActiveRecord::Migration<%= migration_version %>
|
2
|
+
def self.up
|
3
|
+
ActiveRecord::Base.transaction do
|
4
|
+
|
5
|
+
create_table :experiments do |t|
|
6
|
+
t.string :name
|
7
|
+
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
|
11
|
+
create_table :variations do |t|
|
12
|
+
t.integer :experiment_id
|
13
|
+
t.string :name
|
14
|
+
t.string :letter_designation
|
15
|
+
t.integer :_impression_total, default: 0, null: false
|
16
|
+
t.integer :_segmentation_total, default: 0, null: false
|
17
|
+
t.integer :_impression_success, default: 0, null: false
|
18
|
+
t.integer :_segmentation_success, default: 0, null: false
|
19
|
+
|
20
|
+
t.timestamps
|
21
|
+
end
|
22
|
+
|
23
|
+
create_table :impressions do |t|
|
24
|
+
t.integer :variation_id
|
25
|
+
t.boolean :success
|
26
|
+
t.datetime :success_at
|
27
|
+
t.integer :splutable_id
|
28
|
+
t.string :splutable_type
|
29
|
+
t.integer :segment_participant_id
|
30
|
+
|
31
|
+
t.timestamps
|
32
|
+
end
|
33
|
+
|
34
|
+
create_table :segment_participants do |t|
|
35
|
+
t.integer :variation_id
|
36
|
+
t.boolean :success
|
37
|
+
t.datetime :success_at
|
38
|
+
t.integer :splutable_id
|
39
|
+
t.string :splutable_type
|
40
|
+
|
41
|
+
t.timestamps
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
def self.down
|
48
|
+
ActiveRecord::Base.transaction do
|
49
|
+
drop_table :experiments
|
50
|
+
drop_table :impressions
|
51
|
+
drop_table :segment_participants
|
52
|
+
drop_table :variations
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/railtie.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module Splut
|
4
|
+
class Experiment < ActiveRecord::Base
|
5
|
+
self.table_name = "experiments"
|
6
|
+
|
7
|
+
has_many :variations
|
8
|
+
|
9
|
+
|
10
|
+
def is_in_group?(splutable_thing)
|
11
|
+
# only checks to see if they are already segemented
|
12
|
+
# but will not segement them
|
13
|
+
end
|
14
|
+
|
15
|
+
def retrieve_group!(splutable_thing)
|
16
|
+
# will return the segment participant if the
|
17
|
+
# thing is already in the experiment
|
18
|
+
#
|
19
|
+
#
|
20
|
+
# will put the participant into the experiment if not
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'counter_culture'
|
2
|
+
|
3
|
+
|
4
|
+
module Splut
|
5
|
+
class Impression < ActiveRecord::Base
|
6
|
+
self.table_name = "impressions"
|
7
|
+
|
8
|
+
belongs_to :variation
|
9
|
+
|
10
|
+
belongs_to :splutable, polymorphic: true
|
11
|
+
|
12
|
+
|
13
|
+
counter_culture :variation, column_name: '_impression_total'
|
14
|
+
counter_culture :variation, column_name: proc {|model| model.success ? '_impression_success' : nil }
|
15
|
+
|
16
|
+
|
17
|
+
def success!
|
18
|
+
# set this impression to successful
|
19
|
+
# set the segment participant to successufl
|
20
|
+
#
|
21
|
+
#
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
require 'counter_culture'
|
3
|
+
|
4
|
+
module Splut
|
5
|
+
class SegementParticipant < ActiveRecord::Base
|
6
|
+
self.table_name = "segment_participants"
|
7
|
+
|
8
|
+
belongs_to :variation
|
9
|
+
belongs_to :splutable, polymorphic: true
|
10
|
+
|
11
|
+
counter_culture :variation, column_name: :_segment_total
|
12
|
+
counter_culture :variation, column_name: proc {|model| model.success ? '_segment_success' : nil }
|
13
|
+
|
14
|
+
def success!
|
15
|
+
# since we don't know the impression, just guess
|
16
|
+
# that the last impression was the successful one
|
17
|
+
#
|
18
|
+
#
|
19
|
+
# set this + the last impression to successful
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/splut.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# note this file must be named identically to the gem's name (using hyphen)
|
2
|
+
# for it to be picked up in the Gem build
|
3
|
+
#
|
4
|
+
# THIS FILE IS NOT in the specs and is for the gem builder
|
5
|
+
|
6
|
+
$LOAD_PATH.unshift __dir__
|
7
|
+
|
8
|
+
def require_all(path)
|
9
|
+
pattern = File.join(__dir__, path, "*.rb")
|
10
|
+
Dir.glob(pattern).sort.each do |f|
|
11
|
+
require f
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# require_all("generators/templates")
|
16
|
+
require_all("generators/splut")
|
17
|
+
require_all("splut/controllers/concerns")
|
18
|
+
require_all("splut/models")
|
19
|
+
# primary module for UTM. note this file is included in the specs
|
20
|
+
|
21
|
+
module Splut
|
22
|
+
require "railtie.rb" if defined?(Rails)
|
23
|
+
|
24
|
+
class Settings
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.configure(&block)
|
29
|
+
@_settings = Settings.new
|
30
|
+
|
31
|
+
block.call(@_settings)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
|
data/lib/version.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: splut
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Fleetwood-Boldt
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '5.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: counter_culture
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: simplecov
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -57,7 +71,16 @@ email: code@jasonfb.net
|
|
57
71
|
executables: []
|
58
72
|
extensions: []
|
59
73
|
extra_rdoc_files: []
|
60
|
-
files:
|
74
|
+
files:
|
75
|
+
- lib/generators/splut/install_generator.rb
|
76
|
+
- lib/generators/templates/create_splut_tables.rb
|
77
|
+
- lib/railtie.rb
|
78
|
+
- lib/splut.rb
|
79
|
+
- lib/splut/models/experiment.rb
|
80
|
+
- lib/splut/models/impression.rb
|
81
|
+
- lib/splut/models/segement_participant.rb
|
82
|
+
- lib/splut/models/variation.rb
|
83
|
+
- lib/version.rb
|
61
84
|
homepage: https://heliosdev.shop/splut/
|
62
85
|
licenses:
|
63
86
|
- MIT
|