universal-track-manager 0.7.0.alpha → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
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: