universal-track-manager 0.6.3 → 0.7.0.alpha
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/generators/templates/create_universal_track_manager_tables.rb +2 -6
- data/lib/generators/templates/universal_track_manager.rb +2 -2
- data/lib/generators/universal_track_manager/install_generator.rb +22 -3
- data/lib/universal_track_manager.rb +10 -2
- data/lib/universal_track_manager/controllers/concerns/universal_track_manager_concern.rb +13 -38
- data/lib/universal_track_manager/models/visit.rb +7 -6
- data/lib/version.rb +1 -1
- metadata +25 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d480176796bb905c66f3e4eb2904402232548966be5183768033636b9e50d7b
|
4
|
+
data.tar.gz: 0a7762ea705d448444a4113e254c49ba9e77588a4880197c5244e46388266637
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99679f236136ab3eed671f2a0319cd01e53ca833589b97fab3e289eaa1fb5647bce188e0d4fbce05c9b5ef9ed0e09f65669e84ac2920c5430fbb1b89f03e0083
|
7
|
+
data.tar.gz: 6997c26bf61ecbcb8e4867a3dfac99158d4b885209248746c364178acd3405698a8e210204d0a619f34c6a0c8fb8ef4badd4f24bb105292a9d5c9dbef47e1bc0
|
@@ -11,15 +11,11 @@ class CreateUniversalTrackManagerTables < ActiveRecord::Migration<%= migration_v
|
|
11
11
|
|
12
12
|
create_table :campaigns do |t|
|
13
13
|
# this table gets automatically populated by inbound traffic
|
14
|
-
|
15
|
-
t.string :utm_medium, limit: 50
|
16
|
-
t.string :utm_campaign, limit: 50
|
17
|
-
t.string :utm_content, limit: 50
|
18
|
-
t.string :utm_term, limit: 50
|
14
|
+
#GENERATOR INSERTS CAMPAIGN COLUMNS HERE
|
19
15
|
t.timestamps
|
20
16
|
end
|
21
17
|
|
22
|
-
|
18
|
+
#GENERATOR INSERTS CAMPAIGN INDEX HERE
|
23
19
|
|
24
20
|
create_table :visits do |t|
|
25
21
|
t.datetime :first_pageload
|
@@ -1,4 +1,7 @@
|
|
1
|
-
|
1
|
+
|
2
|
+
require 'rails/generators'
|
3
|
+
|
4
|
+
require 'byebug'
|
2
5
|
|
3
6
|
module UniversalTrackManager
|
4
7
|
class InstallGenerator < Rails::Generators::Base
|
@@ -9,6 +12,7 @@ module UniversalTrackManager
|
|
9
12
|
source_root File.expand_path('../templates', __dir__)
|
10
13
|
|
11
14
|
class_option :orm, type: 'boolean'
|
15
|
+
class_option :param_list, type: :string, default: 'utm_source,utm_medium,utm_campaign,utm_content,utm_term'
|
12
16
|
|
13
17
|
|
14
18
|
def self.next_migration_number(path)
|
@@ -17,11 +21,26 @@ module UniversalTrackManager
|
|
17
21
|
|
18
22
|
desc "Creates an initializer for Universal Track Manager and copy files to your application."
|
19
23
|
def create_universal_track_manager_migration
|
20
|
-
|
24
|
+
@params = options['param_list']
|
25
|
+
column_defs = ""
|
26
|
+
@params.split(',').each do |p|
|
27
|
+
column_defs += " t.string :#{p}, limit:256\n"
|
28
|
+
end
|
29
|
+
|
30
|
+
index_def = "add_index :campaigns, #{@params.split(',').map{|c| c.to_sym}.to_s}, name: 'utm_all_combined'"
|
31
|
+
copy_file "create_universal_track_manager_tables.rb", "#{self.class.source_root}/create_universal_track_manager_tables.rb-staged"
|
32
|
+
byebug
|
33
|
+
gsub_file "#{self.class.source_root}/create_universal_track_manager_tables.rb-staged", "#GENERATOR INSERTS CAMPAIGN COLUMNS HERE", column_defs
|
34
|
+
byebug
|
35
|
+
gsub_file "#{self.class.source_root}/create_universal_track_manager_tables.rb-staged", "#GENERATOR INSERTS CAMPAIGN INDEX HERE", index_def
|
36
|
+
migration_template "create_universal_track_manager_tables.rb-staged", "db/migrate/create_universal_track_manager_tables.rb"
|
21
37
|
end
|
22
38
|
|
23
39
|
def create_universal_track_manager_initializer
|
24
|
-
|
40
|
+
column_config = "config.campaign_columns = '#{options.param_list}'"
|
41
|
+
copy_file "universal_track_manager.rb", "#{self.class.source_root}/universal_track_manager.rb-staged"
|
42
|
+
gsub_file "#{self.class.source_root}/universal_track_manager.rb-staged", "#GENERATOR INSERTS CAMPAIGN COLUMN CONFIG HERE", column_config
|
43
|
+
copy_file 'universal_track_manager.rb-staged', 'config/initializers/universal_track_manager.rb'
|
25
44
|
end
|
26
45
|
|
27
46
|
def migration_version
|
@@ -4,7 +4,7 @@ module UniversalTrackManager
|
|
4
4
|
require "railtie.rb" if defined?(Rails)
|
5
5
|
|
6
6
|
class Settings
|
7
|
-
attr_accessor :track_ips, :track_utms, :track_user_agent, :track_http_referrer
|
7
|
+
attr_accessor :track_ips, :track_utms, :track_user_agent, :track_http_referrer, :campaign_columns
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.configure(&block)
|
@@ -13,7 +13,6 @@ module UniversalTrackManager
|
|
13
13
|
block.call(@_settings)
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
16
|
def self.track_ips?
|
18
17
|
@_settings.track_ips
|
19
18
|
end
|
@@ -29,6 +28,15 @@ module UniversalTrackManager
|
|
29
28
|
def self.track_http_referrer?
|
30
29
|
@_settings.track_http_referrer
|
31
30
|
end
|
31
|
+
|
32
|
+
def self.campaign_column_names
|
33
|
+
@campaign_column_names ||= @_settings.campaign_columns.split(',')
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.campaign_column_symbols
|
37
|
+
@campaign_column_symbols ||= @_settings.campaign_columns.split(',').map{|c| c.to_sym}
|
38
|
+
end
|
39
|
+
|
32
40
|
end
|
33
41
|
|
34
42
|
|
@@ -2,12 +2,21 @@ module UniversalTrackManagerConcern
|
|
2
2
|
extend ActiveSupport::Concern
|
3
3
|
attr_accessor :visit_evicted
|
4
4
|
|
5
|
+
|
6
|
+
|
5
7
|
included do
|
6
8
|
before_action :track_visitor
|
9
|
+
|
10
|
+
UniversalTrackManager.campaign_column_symbols.each do |s|
|
11
|
+
define_method(s) do
|
12
|
+
return nil if ! UniversalTrackManager.track_utms?
|
13
|
+
permitted_utm_params[s]
|
14
|
+
end
|
15
|
+
end
|
7
16
|
end
|
8
17
|
|
9
18
|
def permitted_utm_params
|
10
|
-
params.permit(
|
19
|
+
params.permit(*(UniversalTrackManager.campaign_column_symbols))
|
11
20
|
end
|
12
21
|
|
13
22
|
|
@@ -21,32 +30,6 @@ module UniversalTrackManagerConcern
|
|
21
30
|
request.user_agent[0..255]
|
22
31
|
end
|
23
32
|
|
24
|
-
|
25
|
-
def utm_campaign
|
26
|
-
return nil if ! UniversalTrackManager.track_utms?
|
27
|
-
permitted_utm_params[:utm_campaign]
|
28
|
-
end
|
29
|
-
|
30
|
-
def utm_source
|
31
|
-
return nil if ! UniversalTrackManager.track_utms?
|
32
|
-
permitted_utm_params[:utm_source]
|
33
|
-
end
|
34
|
-
|
35
|
-
def utm_term
|
36
|
-
return nil if ! UniversalTrackManager.track_utms?
|
37
|
-
permitted_utm_params[:utm_term]
|
38
|
-
end
|
39
|
-
|
40
|
-
def utm_content
|
41
|
-
return nil if ! UniversalTrackManager.track_utms?
|
42
|
-
permitted_utm_params[:utm_content]
|
43
|
-
end
|
44
|
-
|
45
|
-
def utm_medium
|
46
|
-
return nil if ! UniversalTrackManager.track_utms?
|
47
|
-
permitted_utm_params[:utm_medium]
|
48
|
-
end
|
49
|
-
|
50
33
|
def now
|
51
34
|
@now ||= Time.now
|
52
35
|
end
|
@@ -71,11 +54,7 @@ module UniversalTrackManagerConcern
|
|
71
54
|
begin
|
72
55
|
existing_visit = UniversalTrackManager::Visit.find(session['visit_id'])
|
73
56
|
|
74
|
-
evict_visit!(existing_visit) if any_utm_params? && !existing_visit.matches_all_utms?(
|
75
|
-
utm_source: utm_source,
|
76
|
-
utm_term: utm_term,
|
77
|
-
utm_content: utm_content,
|
78
|
-
utm_medium: utm_medium})
|
57
|
+
evict_visit!(existing_visit) if any_utm_params? && !existing_visit.matches_all_utms?(permitted_utm_params)
|
79
58
|
|
80
59
|
evict_visit!(existing_visit) if existing_visit.ip_v4_address != ip_address
|
81
60
|
evict_visit!(existing_visit) if existing_visit.browser && existing_visit.browser.name != user_agent
|
@@ -92,7 +71,7 @@ module UniversalTrackManagerConcern
|
|
92
71
|
|
93
72
|
def any_utm_params?
|
94
73
|
return false if ! UniversalTrackManager.track_utms?
|
95
|
-
|
74
|
+
UniversalTrackManager.campaign_column_symbols.any? do |key|
|
96
75
|
params[key].present?
|
97
76
|
end
|
98
77
|
end
|
@@ -105,11 +84,7 @@ module UniversalTrackManagerConcern
|
|
105
84
|
def find_or_create_campaign_by_current
|
106
85
|
return nil if ! UniversalTrackManager.track_utms?
|
107
86
|
campaign = UniversalTrackManager::Campaign.find_or_create_by(
|
108
|
-
|
109
|
-
utm_source: utm_source,
|
110
|
-
utm_term: utm_term,
|
111
|
-
utm_content: utm_content,
|
112
|
-
utm_medium: utm_medium
|
87
|
+
*permitted_utm_params
|
113
88
|
)
|
114
89
|
end
|
115
90
|
|
@@ -9,16 +9,17 @@ class UniversalTrackManager::Visit < ActiveRecord::Base
|
|
9
9
|
if !campaign
|
10
10
|
# this visit has no campaign, which means all UTMs = null
|
11
11
|
# if any of the UTMs are present, return false (they don't match null)
|
12
|
-
return !
|
12
|
+
return ! UniversalTrackManager.campaign_column_symbols.any? do |key|
|
13
13
|
params[key].present?
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
17
|
# note params are allowed to be missing
|
18
|
-
|
19
|
-
campaign
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
UniversalTrackManager.campaign_column_symbols.each do |c|
|
19
|
+
if campaign[c] != params[c]
|
20
|
+
return false
|
21
|
+
end
|
22
|
+
end
|
23
|
+
return true
|
23
24
|
end
|
24
25
|
end
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: universal-track-manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0.alpha
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Fleetwood-Boldt
|
@@ -28,16 +28,30 @@ dependencies:
|
|
28
28
|
name: simplecov
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: simplecov-rcov
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: appraisal
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,11 +84,13 @@ files:
|
|
70
84
|
- lib/universal_track_manager/models/campaign.rb
|
71
85
|
- lib/universal_track_manager/models/visit.rb
|
72
86
|
- lib/version.rb
|
73
|
-
homepage: https://blog.jasonfleetwoodboldt.com/universal-track-manager/
|
87
|
+
homepage: https://blog.jasonfleetwoodboldt.com/my-open-source-projects/universal-track-manager/
|
74
88
|
licenses:
|
75
89
|
- MIT
|
76
90
|
metadata:
|
77
91
|
source_code_uri: https://github.com/jasonfb/universal_track_manager
|
92
|
+
documentation_uri: https://jfb.teachable.com/p/gems-by-jason
|
93
|
+
homepage_uri: https://blog.jasonfleetwoodboldt.com/my-open-source-projects/universal-track-manager/
|
78
94
|
post_install_message: |
|
79
95
|
---------------------------------------------
|
80
96
|
Welcome to Universal Track Manager
|
@@ -92,11 +108,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
108
|
version: '0'
|
93
109
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
110
|
requirements:
|
95
|
-
- - "
|
111
|
+
- - ">"
|
96
112
|
- !ruby/object:Gem::Version
|
97
|
-
version:
|
113
|
+
version: 1.3.1
|
98
114
|
requirements: []
|
99
|
-
rubygems_version: 3.
|
115
|
+
rubygems_version: 3.2.7
|
100
116
|
signing_key:
|
101
117
|
specification_version: 4
|
102
118
|
summary: A gem to track visitors to your website.
|