universal-track-manager 0.7.0.alpha → 0.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3d480176796bb905c66f3e4eb2904402232548966be5183768033636b9e50d7b
4
- data.tar.gz: 0a7762ea705d448444a4113e254c49ba9e77588a4880197c5244e46388266637
3
+ metadata.gz: 8712d19c21825899298ab6fb39d7d1d97299261003898e730db82e6b72fe44bf
4
+ data.tar.gz: c215ac7ba9ef0ce32bc9abf0c9d3742ed68e108103725b3b1ef74b71635336d1
5
5
  SHA512:
6
- metadata.gz: 99679f236136ab3eed671f2a0319cd01e53ca833589b97fab3e289eaa1fb5647bce188e0d4fbce05c9b5ef9ed0e09f65669e84ac2920c5430fbb1b89f03e0083
7
- data.tar.gz: 6997c26bf61ecbcb8e4867a3dfac99158d4b885209248746c364178acd3405698a8e210204d0a619f34c6a0c8fb8ef4badd4f24bb105292a9d5c9dbef47e1bc0
6
+ metadata.gz: 513b88940fbd32c3e535c4b8e4eb4e43ffc797bbb5df8f8dd90b4b2faa94075557d44975c1a44714eaca871476095ff02ee73bc9f4790e937c4cb93d336e258a
7
+ data.tar.gz: 42a4c1af1fb267ca4280b3e25028d7a130ca76c0fbd79f4f0ad947eb1d167e5ce6c3f78211763ec7e652fecc09d9b5be6d645a0719606ec0f735aa1b179f5814
@@ -4,7 +4,8 @@ class CreateUniversalTrackManagerTables < ActiveRecord::Migration<%= migration_v
4
4
 
5
5
  create_table :browsers do |t|
6
6
  # this table gets automatically populated by inbound traffic
7
- t.string :name, size: 255
7
+ t.string :name, limit: 255
8
+ t.timestamps
8
9
  end
9
10
 
10
11
  add_index :browsers, :name
@@ -12,10 +13,11 @@ class CreateUniversalTrackManagerTables < ActiveRecord::Migration<%= migration_v
12
13
  create_table :campaigns do |t|
13
14
  # this table gets automatically populated by inbound traffic
14
15
  #GENERATOR INSERTS CAMPAIGN COLUMNS HERE
16
+ t.string :sha1, limit: 40
15
17
  t.timestamps
16
18
  end
17
19
 
18
- #GENERATOR INSERTS CAMPAIGN INDEX HERE
20
+ add_index :campaigns, :sha1
19
21
 
20
22
  create_table :visits do |t|
21
23
  t.datetime :first_pageload
@@ -23,10 +25,11 @@ class CreateUniversalTrackManagerTables < ActiveRecord::Migration<%= migration_v
23
25
  t.integer :original_visit_id
24
26
  t.integer :campaign_id
25
27
  t.integer :browser_id
26
- t.string :ip_v4_address, length: 15
28
+ t.string :ip_v4_address, limit: 15
27
29
 
28
30
  t.integer :viewport_width
29
31
  t.integer :viewport_height
32
+ t.timestamps
30
33
  end
31
34
  end
32
35
  end
@@ -26,13 +26,8 @@ module UniversalTrackManager
26
26
  @params.split(',').each do |p|
27
27
  column_defs += " t.string :#{p}, limit:256\n"
28
28
  end
29
-
30
- index_def = "add_index :campaigns, #{@params.split(',').map{|c| c.to_sym}.to_s}, name: 'utm_all_combined'"
31
29
  copy_file "create_universal_track_manager_tables.rb", "#{self.class.source_root}/create_universal_track_manager_tables.rb-staged"
32
- byebug
33
30
  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
31
  migration_template "create_universal_track_manager_tables.rb-staged", "db/migrate/create_universal_track_manager_tables.rb"
37
32
  end
38
33
 
@@ -83,9 +83,16 @@ module UniversalTrackManagerConcern
83
83
 
84
84
  def find_or_create_campaign_by_current
85
85
  return nil if ! UniversalTrackManager.track_utms?
86
- campaign = UniversalTrackManager::Campaign.find_or_create_by(
87
- *permitted_utm_params
88
- )
86
+ gen_sha1 = gen_campaign_key(permitted_utm_params)
87
+
88
+ # find_or_create_by finding only by sha1 would be nice here, but how to do so with a dynamic set of columns?
89
+ # we've got a small chance of dups here due to the non-atomic find/create and sha1, but that's ok for this application.
90
+ c = UniversalTrackManager::Campaign.find_by(sha1: gen_sha1)
91
+ c ||= UniversalTrackManager::Campaign.create(*(permitted_utm_params.merge({"sha1": gen_sha1})))
92
+ end
93
+
94
+ def gen_campaign_key(params)
95
+ Digest::SHA1.hexdigest(params.keys.map{|k| k.downcase()}.sort.map{|k| {"#{k}": params[k]}}.to_s)
89
96
  end
90
97
 
91
98
  def evict_visit!(old_visit)
@@ -16,7 +16,7 @@ class UniversalTrackManager::Visit < ActiveRecord::Base
16
16
 
17
17
  # note params are allowed to be missing
18
18
  UniversalTrackManager.campaign_column_symbols.each do |c|
19
- if campaign[c] != params[c]
19
+ if (campaign[c] && (campaign[c] != params[c])) || (!campaign[c] && params[c])
20
20
  return false
21
21
  end
22
22
  end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module UniversalTrackManager
2
- VERSION = "0.7.0.alpha"
2
+ VERSION = "0.7.1"
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.7.0.alpha
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Fleetwood-Boldt
@@ -108,9 +108,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
108
108
  version: '0'
109
109
  required_rubygems_version: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - ">"
111
+ - - ">="
112
112
  - !ruby/object:Gem::Version
113
- version: 1.3.1
113
+ version: '0'
114
114
  requirements: []
115
115
  rubygems_version: 3.2.7
116
116
  signing_key: