ahoy_matey 3.1.0 → 3.2.0
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/CHANGELOG.md +5 -0
- data/README.md +30 -10
- data/lib/ahoy.rb +1 -0
- data/lib/ahoy/version.rb +1 -1
- data/lib/generators/ahoy/activerecord_generator.rb +12 -4
- data/lib/generators/ahoy/templates/base_store_initializer.rb.tt +5 -0
- data/lib/generators/ahoy/templates/database_store_initializer.rb.tt +5 -0
- metadata +4 -158
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51e11f3086c12a1418ea7436e291ca9d2f0c7e0aa3091c48c904d05b4be6a210
|
4
|
+
data.tar.gz: 5b5c6afc94c0db23f2f1616f6e9edc0ae95ff334e33704c26417705d06d04670
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd75680d3d04b2383c30b19848f88fcb838f1498e8819d2d758aec6443e85bfb2f73a421da968cb54628097631c777ac1f95dd1ca4bae6d6b22d748a44dcb84d
|
7
|
+
data.tar.gz: 2d336bd12312cddf4b76f213b1f7f84b1fc2f0b67302e75096d1eb21013982f532064b31894ba217f7ccbafdbaf5eb4c691a3a86350b8abf1449374f66015909
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -78,6 +78,10 @@ Check out [Ahoy iOS](https://github.com/namolnad/ahoy-ios) and [Ahoy Android](ht
|
|
78
78
|
|
79
79
|
Ahoy provides a number of options to help with GDPR compliance. See the [GDPR section](#gdpr-compliance-1) for more info.
|
80
80
|
|
81
|
+
### Geocoding Setup
|
82
|
+
|
83
|
+
To enable geocoding, see the [Geocoding section](#geocoding).
|
84
|
+
|
81
85
|
## How It Works
|
82
86
|
|
83
87
|
### Visits
|
@@ -312,40 +316,56 @@ Ahoy.cookie_options = {same_site: :lax}
|
|
312
316
|
|
313
317
|
### Geocoding
|
314
318
|
|
315
|
-
|
319
|
+
Ahoy uses [Geocoder](https://github.com/alexreisner/geocoder) for geocoding. We recommend configuring [local geocoding](#local-geocoding) so IP addresses are not sent to a 3rd party service. If you do use a 3rd party service, be sure to add it to your GDPR subprocessor list. If Ahoy is configured to [mask ips](#ip-masking), the masked IP is used (this increases privacy but can reduce accuracy).
|
320
|
+
|
321
|
+
To enable geocoding, update `config/initializers/ahoy.rb`:
|
316
322
|
|
317
323
|
```ruby
|
318
|
-
Ahoy.geocode =
|
324
|
+
Ahoy.geocode = true
|
319
325
|
```
|
320
326
|
|
321
|
-
The default job queue is `:ahoy`. Change this with:
|
327
|
+
Geocoding is performed in a background job so it doesn’t slow down web requests. The default job queue is `:ahoy`. Change this with:
|
322
328
|
|
323
329
|
```ruby
|
324
330
|
Ahoy.job_queue = :low_priority
|
325
331
|
```
|
326
332
|
|
327
|
-
|
328
|
-
|
329
|
-
To avoid calls to a remote API, download the [GeoLite2 City database](https://dev.maxmind.com/geoip/geoip2/geolite2/) and configure Geocoder to use it.
|
333
|
+
### Local Geocoding
|
330
334
|
|
331
|
-
Add this line to your application’s Gemfile:
|
335
|
+
For privacy and performance, we recommend geocoding locally. Add this line to your application’s Gemfile:
|
332
336
|
|
333
337
|
```ruby
|
334
338
|
gem 'maxminddb'
|
335
339
|
```
|
336
340
|
|
337
|
-
|
341
|
+
For city-level geocoding, download the [GeoLite2 City database](https://dev.maxmind.com/geoip/geoip2/geolite2/) and create `config/initializers/geocoder.rb` with:
|
338
342
|
|
339
343
|
```ruby
|
340
344
|
Geocoder.configure(
|
341
345
|
ip_lookup: :geoip2,
|
342
346
|
geoip2: {
|
343
|
-
file:
|
347
|
+
file: "path/to/GeoLite2-City.mmdb"
|
344
348
|
}
|
345
349
|
)
|
346
350
|
```
|
347
351
|
|
348
|
-
|
352
|
+
For country-level geocoding, install the `geoip-database` package. It’s preinstalled on Heroku. For Ubuntu, use:
|
353
|
+
|
354
|
+
```sh
|
355
|
+
sudo apt-get install geoip-database
|
356
|
+
```
|
357
|
+
|
358
|
+
And create `config/initializers/geocoder.rb` with:
|
359
|
+
|
360
|
+
```ruby
|
361
|
+
Geocoder.configure(
|
362
|
+
ip_lookup: :maxmind_local,
|
363
|
+
maxmind_local: {
|
364
|
+
file: "/usr/share/GeoIP/GeoIP.dat",
|
365
|
+
package: :country
|
366
|
+
}
|
367
|
+
)
|
368
|
+
```
|
349
369
|
|
350
370
|
### Token Generation
|
351
371
|
|
data/lib/ahoy.rb
CHANGED
data/lib/ahoy/version.rb
CHANGED
@@ -17,9 +17,7 @@ module Ahoy
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def properties_type
|
20
|
-
|
21
|
-
# so database connection isn't needed
|
22
|
-
case ActiveRecord::Base.connection_config[:adapter].to_s
|
20
|
+
case adapter
|
23
21
|
when /postg/i # postgres, postgis
|
24
22
|
"jsonb"
|
25
23
|
when /mysql/i
|
@@ -29,8 +27,18 @@ module Ahoy
|
|
29
27
|
end
|
30
28
|
end
|
31
29
|
|
30
|
+
# use connection_config instead of connection.adapter
|
31
|
+
# so database connection isn't needed
|
32
|
+
def adapter
|
33
|
+
if ActiveRecord::VERSION::STRING.to_f >= 6.1
|
34
|
+
ActiveRecord::Base.connection_db_config.adapter.to_s
|
35
|
+
else
|
36
|
+
ActiveRecord::Base.connection_config[:adapter].to_s
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
32
40
|
def rails52?
|
33
|
-
ActiveRecord::VERSION::STRING >=
|
41
|
+
ActiveRecord::VERSION::STRING.to_f >= 5.2
|
34
42
|
end
|
35
43
|
|
36
44
|
def migration_version
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ahoy_matey
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -66,162 +66,8 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: bundler
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rake
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: minitest
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: combustion
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rails
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: sqlite3
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - ">="
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: pg
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '0'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: mysql2
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ">="
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - ">="
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0'
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: mongoid
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - ">="
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: '0'
|
188
|
-
type: :development
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - ">="
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: '0'
|
195
|
-
- !ruby/object:Gem::Dependency
|
196
|
-
name: browser
|
197
|
-
requirement: !ruby/object:Gem::Requirement
|
198
|
-
requirements:
|
199
|
-
- - "~>"
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
version: '2.0'
|
202
|
-
type: :development
|
203
|
-
prerelease: false
|
204
|
-
version_requirements: !ruby/object:Gem::Requirement
|
205
|
-
requirements:
|
206
|
-
- - "~>"
|
207
|
-
- !ruby/object:Gem::Version
|
208
|
-
version: '2.0'
|
209
|
-
- !ruby/object:Gem::Dependency
|
210
|
-
name: user_agent_parser
|
211
|
-
requirement: !ruby/object:Gem::Requirement
|
212
|
-
requirements:
|
213
|
-
- - ">="
|
214
|
-
- !ruby/object:Gem::Version
|
215
|
-
version: '0'
|
216
|
-
type: :development
|
217
|
-
prerelease: false
|
218
|
-
version_requirements: !ruby/object:Gem::Requirement
|
219
|
-
requirements:
|
220
|
-
- - ">="
|
221
|
-
- !ruby/object:Gem::Version
|
222
|
-
version: '0'
|
223
69
|
description:
|
224
|
-
email: andrew@
|
70
|
+
email: andrew@ankane.org
|
225
71
|
executables: []
|
226
72
|
extensions: []
|
227
73
|
extra_rdoc_files: []
|
@@ -281,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
281
127
|
- !ruby/object:Gem::Version
|
282
128
|
version: '0'
|
283
129
|
requirements: []
|
284
|
-
rubygems_version: 3.
|
130
|
+
rubygems_version: 3.2.3
|
285
131
|
signing_key:
|
286
132
|
specification_version: 4
|
287
133
|
summary: Simple, powerful, first-party analytics for Rails
|