splut 0.0.0 → 0.0.1
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/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
|