universal-track-manager 0.6.3 → 0.7.0.alpha

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b7e8f1a36f7a12f90ea440dfdd54d7797c820ccfdfc47c014832794bdf083426
4
- data.tar.gz: cc7cd314a64fa5a6cd3a0fc92bf37014608069f5012cbf2621534ff853c1eb4e
3
+ metadata.gz: 3d480176796bb905c66f3e4eb2904402232548966be5183768033636b9e50d7b
4
+ data.tar.gz: 0a7762ea705d448444a4113e254c49ba9e77588a4880197c5244e46388266637
5
5
  SHA512:
6
- metadata.gz: 90dd0a3aef33513c517df1bf035fc1cdc56664be4ff47d234be8293bf719bed752faa4e24aa0e1501fbf39b8716c051d67132d2b69bd273b29aa9fb0ee0597b4
7
- data.tar.gz: f29a7e6975a08d4e8efebe83047f6c01e56e9fe130a3ce9dbc54172e0d7f8a7d39b521d3f0af43619cc8a1ef9625dc3c7c2be56cf23bda65cf04ed3661d9b20e
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
- t.string :utm_source, limit: 50
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
- add_index :campaigns, [:utm_source, :utm_medium, :utm_campaign, :utm_content, :utm_term], name: "utm_all_combined"
18
+ #GENERATOR INSERTS CAMPAIGN INDEX HERE
23
19
 
24
20
  create_table :visits do |t|
25
21
  t.datetime :first_pageload
@@ -2,8 +2,8 @@ UniversalTrackManager.configure do |config|
2
2
  config.track_ips = true
3
3
  config.track_utms = true
4
4
  config.track_user_agent = true
5
-
5
+ #GENERATOR INSERTS CAMPAIGN COLUMN CONFIG HERE
6
6
 
7
7
  # config.track_referrer = false
8
8
 
9
- end
9
+ end
@@ -1,4 +1,7 @@
1
- require 'rails/generators/active_record'
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
- migration_template "create_universal_track_manager_tables.rb", "db/migrate/create_universal_track_manager_tables.rb"
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
- copy_file 'universal_track_manager.rb', 'config/initializers/universal_track_manager.rb'
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(:utm_campaign, :utm_source, :utm_term, :utm_content, :utm_medium)
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?({utm_campaign: utm_campaign,
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
- [:utm_campaign, :utm_source, :utm_medium, :utm_term, :utm_content].any? do |key|
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
- utm_campaign: utm_campaign,
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 ! [:utm_campaign, :utm_source, :utm_medium, :utm_term, :utm_content].any? do |key|
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
- return campaign.utm_campaign == params[:utm_campaign] &&
19
- campaign.utm_source == params[:utm_source] &&
20
- campaign.utm_medium == params[:utm_medium] &&
21
- campaign.utm_term == params[:utm_term] &&
22
- campaign.utm_content == params[:utm_content]
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
@@ -1,3 +1,3 @@
1
1
  module UniversalTrackManager
2
- VERSION = "0.6.3"
2
+ VERSION = "0.7.0.alpha"
3
3
  end
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.6.3
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.17'
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.17'
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: '0'
113
+ version: 1.3.1
98
114
  requirements: []
99
- rubygems_version: 3.0.8
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.