ahoy_matey 1.2.1 → 1.2.2

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
  SHA1:
3
- metadata.gz: 8b95be84952b86c8d63b829a5f79706212be5c25
4
- data.tar.gz: f187b36cf4fceedffea505d542cfcfe967933832
3
+ metadata.gz: d6686254ab1f5bb79219bdb93194e2e3ddb9ddd8
4
+ data.tar.gz: afd9cb6035e939db2c60b881b5a80a2ea0bb407e
5
5
  SHA512:
6
- metadata.gz: f91f26c2cd6f80f792b74dfb3364eadd78a35c76f6894da57468ad8d981c05bc97796c9013f49d8a5acfbec1632e3310b4fa391588f6e21ad6d4b9b4c309ce3a
7
- data.tar.gz: 18dc372e351d0ca497da3642befb01de577b3e5b426442a006150801a6be70ea8b8ff5c24f7bc52a6c248b7d2f428c7de03317154309d5b0e0982a80746f0925
6
+ metadata.gz: 504dd73058c78a635072af48ca326f623a335af74d5cbfc7636ccd0c2d5a0ab12304cee3cc01d51f11829aa80200dada366734d7f55d1b99946ff0d49b072bb2
7
+ data.tar.gz: f1664a981c88b2896e856ec8bcdba0e4b1e94e26b93f290b1b495ad72166787952965ff5566e5325eb0be59ddcf8f70ebc4cdeeccf40cfa8614475fa4c5e35ae
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 1.2.2
2
+
3
+ - Fixed issue with latest version of `browser` gem
4
+ - Added support for RabbitMQ
5
+ - Added support for Amazon Kinesis Firehose
6
+ - Fixed deprecation warnings in Rails 5
7
+
1
8
  ## 1.2.1
2
9
 
3
10
  - Fixed `SystemStackError: stack level too deep` when used with `activerecord-session_store`
data/README.md CHANGED
@@ -36,19 +36,21 @@ Ahoy supports a number of data stores out of the box. You can start with one of
36
36
  - [SQLite](#mysql-or-sqlite)
37
37
  - [MongoDB](#mongodb)
38
38
  - [Fluentd](#fluentd)
39
+ - [RabbitMQ](#rabbitmq-master)
40
+ - [Kinesis Firehose](#kinesis-firehose-master)
39
41
  - [Logs](#logs)
40
42
  - [Custom](#custom)
41
43
 
42
44
  ### PostgreSQL
43
45
 
44
- For Rails 4 and PostgreSQL 9.4 or greater, use:
46
+ For Rails 4.2 and PostgreSQL 9.4 or greater, use:
45
47
 
46
48
  ```sh
47
49
  rails generate ahoy:stores:active_record -d postgresql-jsonb
48
50
  rake db:migrate
49
51
  ```
50
52
 
51
- For Rails 4 and PostgreSQL 9.2 and 9.3, use:
53
+ For Rails 4 and PostgreSQL 9.2 or greater, use:
52
54
 
53
55
  ```sh
54
56
  rails generate ahoy:stores:active_record -d postgresql
@@ -101,6 +103,38 @@ rails generate ahoy:stores:fluentd
101
103
 
102
104
  Use `ENV["FLUENTD_HOST"]` and `ENV["FLUENTD_PORT"]` to configure.
103
105
 
106
+ ### RabbitMQ
107
+
108
+ Add [bunny](https://github.com/ruby-amqp/bunny) to your Gemfile.
109
+
110
+ ```ruby
111
+ gem 'bunny'
112
+ ```
113
+
114
+ And run:
115
+
116
+ ```sh
117
+ rails generate ahoy:stores:bunny
118
+ ```
119
+
120
+ Use `ENV["RABBITMQ_URL"]` to configure.
121
+
122
+ ### Kinesis Firehose
123
+
124
+ Add [aws-sdk](https://github.com/aws/aws-sdk-ruby) to your Gemfile.
125
+
126
+ ```ruby
127
+ gem 'aws-sdk', '>= 2.0.0'
128
+ ```
129
+
130
+ And run:
131
+
132
+ ```sh
133
+ rails generate ahoy:stores:kinesis_firehose
134
+ ```
135
+
136
+ Configure delivery streams and credentials in the initializer.
137
+
104
138
  ### Logs
105
139
 
106
140
  ```sh
@@ -119,13 +153,11 @@ This creates a class for you to fill out.
119
153
 
120
154
  ```ruby
121
155
  class Ahoy::Store < Ahoy::Stores::BaseStore
122
-
123
156
  def track_visit(options)
124
157
  end
125
158
 
126
159
  def track_event(name, properties, options)
127
160
  end
128
-
129
161
  end
130
162
  ```
131
163
 
@@ -172,7 +204,7 @@ ahoy.track "Viewed book", title: "Hot, Flat, and Crowded"
172
204
 
173
205
  #### Native Apps
174
206
 
175
- See the [HTTP spec](#native-apps) until libraries are built.
207
+ See the [HTTP spec](#native-apps-1) until libraries are built.
176
208
 
177
209
  ### Users
178
210
 
@@ -202,11 +234,9 @@ Exclude visits and events from being tracked with:
202
234
 
203
235
  ```ruby
204
236
  class Ahoy::Store < Ahoy::Stores::ActiveRecordStore
205
-
206
237
  def exclude?
207
238
  bot? || request.ip == "192.168.1.1"
208
239
  end
209
-
210
240
  end
211
241
  ```
212
242
 
@@ -216,7 +246,6 @@ Bots are excluded by default.
216
246
 
217
247
  ```ruby
218
248
  class Ahoy::Store < Ahoy::Stores::ActiveRecordStore
219
-
220
249
  def track_visit(options)
221
250
  super do |visit|
222
251
  visit.gclid = visit_properties.landing_params["gclid"]
@@ -228,7 +257,6 @@ class Ahoy::Store < Ahoy::Stores::ActiveRecordStore
228
257
  event.ip = request.ip
229
258
  end
230
259
  end
231
-
232
260
  end
233
261
  ```
234
262
 
@@ -238,11 +266,9 @@ If you use a method other than `current_user`, set it here:
238
266
 
239
267
  ```ruby
240
268
  class Ahoy::Store < Ahoy::Stores::ActiveRecordStore
241
-
242
269
  def user
243
270
  controller.true_user
244
271
  end
245
-
246
272
  end
247
273
  ```
248
274
 
@@ -256,11 +282,9 @@ To customize this, use:
256
282
 
257
283
  ```ruby
258
284
  class Ahoy::Store < Ahoy::Stores::ActiveRecordStore
259
-
260
285
  def report_exception(e)
261
286
  Rollbar.report_exception(e)
262
287
  end
263
-
264
288
  end
265
289
  ```
266
290
 
@@ -270,7 +294,6 @@ For ActiveRecord and Mongoid stores
270
294
 
271
295
  ```ruby
272
296
  class Ahoy::Store < Ahoy::Stores::ActiveRecordStore
273
-
274
297
  def visit_model
275
298
  CustomVisit
276
299
  end
@@ -278,7 +301,6 @@ class Ahoy::Store < Ahoy::Stores::ActiveRecordStore
278
301
  def event_model
279
302
  CustomEvent
280
303
  end
281
-
282
304
  end
283
305
  ```
284
306
 
@@ -302,7 +324,7 @@ Rails actions
302
324
 
303
325
  ```ruby
304
326
  class ApplicationController < ActionController::Base
305
- after_filter :track_action
327
+ after_action :track_action
306
328
 
307
329
  protected
308
330
 
@@ -332,7 +354,19 @@ Ahoy.visit_duration = 30.minutes
332
354
 
333
355
  ### ActiveRecord
334
356
 
335
- Let’s associate orders with visits. Add a `visit_id` column on orders and do:
357
+ Let’s associate orders with visits.
358
+
359
+ First, generate a migration and add a `visit_id` column.
360
+
361
+ ```ruby
362
+ class AddVisitIdToOrders < ActiveRecord::Migration
363
+ def change
364
+ add_column :orders, :visit_id, :uuid
365
+ end
366
+ end
367
+ ```
368
+
369
+ Then, add `visitable` to the model.
336
370
 
337
371
  ```ruby
338
372
  class Order < ActiveRecord::Base
@@ -340,9 +374,7 @@ class Order < ActiveRecord::Base
340
374
  end
341
375
  ```
342
376
 
343
- When a visitor places an order, the `visit_id` column is automatically set.
344
-
345
- :tada: Magic!
377
+ When a visitor places an order, the `visit_id` column is automatically set. :tada:
346
378
 
347
379
  Customize the column and class name with:
348
380
 
@@ -356,13 +388,11 @@ To attach the user with [Doorkeeper](https://github.com/doorkeeper-gem/doorkeepe
356
388
 
357
389
  ```ruby
358
390
  class ApplicationController < ActionController::Base
359
-
360
391
  private
361
392
 
362
393
  def current_resource_owner
363
394
  User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
364
395
  end
365
-
366
396
  end
367
397
  ```
368
398
 
@@ -393,7 +423,7 @@ Ahoy.track_visits_immediately = true
393
423
  You can exclude API endpoints and other actions with:
394
424
 
395
425
  ```ruby
396
- skip_before_filter :track_ahoy_visit
426
+ skip_before_action :track_ahoy_visit
397
427
  ```
398
428
 
399
429
  ## Development
@@ -517,13 +547,13 @@ rails g migration change_properties_to_jsonb_on_ahoy_events
517
547
  And add:
518
548
 
519
549
  ```rb
520
- def up
521
- change_column :ahoy_events, :properties, :jsonb, using: "properties::jsonb"
522
- end
550
+ def up
551
+ change_column :ahoy_events, :properties, :jsonb, using: "properties::jsonb"
552
+ end
523
553
 
524
- def down
525
- change_column :ahoy_events, :properties, :json
526
- end
554
+ def down
555
+ change_column :ahoy_events, :properties, :json
556
+ end
527
557
  ```
528
558
 
529
559
  Note: This will lock the table while the migration is running.
@@ -573,11 +603,9 @@ If you have a custom subscriber, copy the `track` method to `track_event` in `Ah
573
603
 
574
604
  ```ruby
575
605
  class Ahoy::Store < Ahoy::Stores::ActiveRecordTokenStore
576
-
577
606
  def track_event(name, properties, options)
578
607
  # code copied from the track method in your subscriber
579
608
  end
580
-
581
609
  end
582
610
  ```
583
611
 
@@ -589,12 +617,10 @@ To restore this behavior, use:
589
617
 
590
618
  ```ruby
591
619
  class Ahoy::Store < Ahoy::Stores::ActiveRecordTokenStore
592
-
593
620
  def authenticate(user)
594
621
  super
595
622
  ahoy.track "$authenticate"
596
623
  end
597
-
598
624
  end
599
625
  ```
600
626
 
@@ -606,7 +632,6 @@ Skip this step if you do not use these options.
606
632
 
607
633
  ```ruby
608
634
  class Ahoy::Store < Ahoy::Stores::ActiveRecordTokenStore
609
-
610
635
  def user
611
636
  # logic from Ahoy.user_method goes here
612
637
  controller.true_user
@@ -616,7 +641,6 @@ class Ahoy::Store < Ahoy::Stores::ActiveRecordTokenStore
616
641
  # logic from Ahoy.track_bots and Ahoy.exclude_method goes here
617
642
  bot? || request.ip == "192.168.1.1"
618
643
  end
619
-
620
644
  end
621
645
  ```
622
646
 
data/ahoy_matey.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency "rails"
22
22
  spec.add_dependency "addressable"
23
- spec.add_dependency "browser", ">= 0.4.0"
23
+ spec.add_dependency "browser", "~> 2.0"
24
24
  spec.add_dependency "geocoder"
25
25
  spec.add_dependency "referer-parser", ">= 0.3.0"
26
26
  spec.add_dependency "user_agent_parser"
@@ -1,7 +1,12 @@
1
1
  module Ahoy
2
2
  class BaseController < ApplicationController
3
3
  # skip all filters except for authlogic
4
- skip_filter *(_process_action_callbacks.map(&:filter) - [:load_authlogic])
4
+ filters = _process_action_callbacks.map(&:filter) - [:load_authlogic]
5
+ if respond_to?(:skip_action)
6
+ skip_action *filters
7
+ else
8
+ skip_filter *filters
9
+ end
5
10
 
6
11
  def ahoy
7
12
  @ahoy ||= Ahoy::Tracker.new(controller: self, api: true)
data/lib/ahoy.rb CHANGED
@@ -25,6 +25,9 @@ require "ahoy/stores/active_record_token_store"
25
25
  require "ahoy/stores/log_store"
26
26
  require "ahoy/stores/fluentd_store"
27
27
  require "ahoy/stores/mongoid_store"
28
+ require "ahoy/stores/kinesis_firehose_store"
29
+ require "ahoy/stores/bunny_store"
30
+ require "ahoy/log_silencer"
28
31
  require "ahoy/engine"
29
32
  require "ahoy/warden" if defined?(Warden)
30
33
 
@@ -91,10 +94,10 @@ begin
91
94
  require "active_record/session_store/extension/logger_silencer"
92
95
  rescue LoadError
93
96
  require "ahoy/logger_silencer"
94
- Logger.send :include, Ahoy::LoggerSilencer
97
+ Logger.send(:prepend, Ahoy::LoggerSilencer)
95
98
 
96
99
  begin
97
100
  require "syslog/logger"
98
- Syslog::Logger.send :include, Ahoy::LoggerSilencer
101
+ Syslog::Logger.send(:prepend, Ahoy::LoggerSilencer)
99
102
  rescue LoadError; end
100
103
  end
@@ -5,10 +5,14 @@ module Ahoy
5
5
  def self.included(base)
6
6
  base.helper_method :current_visit
7
7
  base.helper_method :ahoy
8
- base.before_filter :set_ahoy_cookies
9
- base.before_filter :track_ahoy_visit
10
- base.before_filter do
11
- RequestStore.store[:ahoy] ||= ahoy
8
+ if base.respond_to?(:before_action)
9
+ base.before_action :set_ahoy_cookies
10
+ base.before_action :track_ahoy_visit
11
+ base.before_action :set_ahoy_request_store
12
+ else
13
+ base.before_filter :set_ahoy_cookies
14
+ base.before_filter :track_ahoy_visit
15
+ base.before_filter :set_ahoy_request_store
12
16
  end
13
17
  end
14
18
 
@@ -30,5 +34,9 @@ module Ahoy
30
34
  ahoy.track_visit(defer: !Ahoy.track_visits_immediately)
31
35
  end
32
36
  end
37
+
38
+ def set_ahoy_request_store
39
+ RequestStore.store[:ahoy] ||= ahoy
40
+ end
33
41
  end
34
42
  end
@@ -17,31 +17,37 @@ module Ahoy
17
17
  end
18
18
 
19
19
  def referrer
20
- @options[:api] ? request.params["referrer"] : request.referer
20
+ @options[:api] ? params["referrer"] : request.referer
21
21
  end
22
22
 
23
23
  def landing_page
24
- @options[:api] ? request.params["landing_page"] : request.original_url
24
+ @options[:api] ? params["landing_page"] : request.original_url
25
25
  end
26
26
 
27
27
  def platform
28
- request.params["platform"]
28
+ params["platform"]
29
29
  end
30
30
 
31
31
  def app_version
32
- request.params["app_version"]
32
+ params["app_version"]
33
33
  end
34
34
 
35
35
  def os_version
36
- request.params["os_version"]
36
+ params["os_version"]
37
37
  end
38
38
 
39
39
  def screen_height
40
- request.params["screen_height"]
40
+ params["screen_height"]
41
41
  end
42
42
 
43
43
  def screen_width
44
- request.params["screen_width"]
44
+ params["screen_width"]
45
+ end
46
+
47
+ private
48
+
49
+ def params
50
+ @params ||= request.params
45
51
  end
46
52
  end
47
53
  end
@@ -15,16 +15,16 @@ module Ahoy
15
15
 
16
16
  def device_type
17
17
  @device_type ||= begin
18
- browser = Browser.new(ua: @user_agent)
18
+ browser = Browser.new(@user_agent)
19
19
  if browser.bot?
20
20
  "Bot"
21
- elsif browser.tv?
21
+ elsif browser.device.tv?
22
22
  "TV"
23
- elsif browser.console?
23
+ elsif browser.device.console?
24
24
  "Console"
25
- elsif browser.tablet?
25
+ elsif browser.device.tablet?
26
26
  "Tablet"
27
- elsif browser.mobile?
27
+ elsif browser.device.mobile?
28
28
  "Mobile"
29
29
  else
30
30
  "Desktop"
data/lib/ahoy/engine.rb CHANGED
@@ -1,25 +1,7 @@
1
1
  module Ahoy
2
2
  class Engine < ::Rails::Engine
3
- # from https://github.com/evrone/quiet_assets/blob/master/lib/quiet_assets.rb
4
3
  initializer "ahoy.middleware", after: "sprockets.environment" do
5
- next unless Ahoy.quiet
6
-
7
- # Parse PATH_INFO by assets prefix
8
- AHOY_PREFIX = "/ahoy/".freeze
9
-
10
- # Just create an alias for call in middleware
11
- Rails::Rack::Logger.class_eval do
12
- def call_with_quiet_ahoy(env)
13
- if env["PATH_INFO"].start_with?(AHOY_PREFIX) && logger.respond_to?(:silence_logger)
14
- logger.silence_logger do
15
- call_without_quiet_ahoy(env)
16
- end
17
- else
18
- call_without_quiet_ahoy(env)
19
- end
20
- end
21
- alias_method_chain :call, :quiet_ahoy
22
- end
4
+ Rails::Rack::Logger.send(:prepend, Ahoy::LogSilencer) if Ahoy.quiet
23
5
  end
24
6
  end
25
7
  end
@@ -0,0 +1,16 @@
1
+ module Ahoy
2
+ module LogSilencer
3
+ PATH_INFO = "PATH_INFO".freeze
4
+ AHOY_PREFIX = "/ahoy/".freeze
5
+
6
+ def call(env)
7
+ if env[PATH_INFO].start_with?(AHOY_PREFIX) && logger.respond_to?(:silence_logger)
8
+ logger.silence_logger do
9
+ super
10
+ end
11
+ else
12
+ super
13
+ end
14
+ end
15
+ end
16
+ end
@@ -7,13 +7,9 @@ require "active_support/concern"
7
7
 
8
8
  module Ahoy
9
9
  module LoggerSilencer
10
- extend ActiveSupport::Concern
11
-
12
- included do
13
- cattr_accessor :silencer
14
- self.silencer = true
15
- alias_method_chain :level, :threadsafety
16
- alias_method_chain :add, :threadsafety
10
+ def self.prepended(base)
11
+ base.cattr_accessor :silencer
12
+ base.silencer = true
17
13
  end
18
14
 
19
15
  def thread_level
@@ -24,15 +20,15 @@ module Ahoy
24
20
  Thread.current[thread_hash_level_key] = level
25
21
  end
26
22
 
27
- def level_with_threadsafety
28
- thread_level || level_without_threadsafety
23
+ def level
24
+ thread_level || super
29
25
  end
30
26
 
31
- def add_with_threadsafety(severity, message = nil, progname = nil, &block)
27
+ def add(severity, message = nil, progname = nil, &block)
32
28
  if !defined?(@logdev) || @logdev.nil? || (severity || UNKNOWN) < level
33
29
  true
34
30
  else
35
- add_without_threadsafety(severity, message, progname, &block)
31
+ super
36
32
  end
37
33
  end
38
34
 
@@ -45,7 +45,7 @@ module Ahoy
45
45
  protected
46
46
 
47
47
  def bot?
48
- @bot ||= request ? Browser.new(ua: request.user_agent).bot? : false
48
+ @bot ||= request ? Browser.new(request.user_agent).bot? : false
49
49
  end
50
50
 
51
51
  def request
@@ -0,0 +1,33 @@
1
+ module Ahoy
2
+ module Stores
3
+ class BunnyStore < LogStore
4
+ def log_visit(data)
5
+ post(visits_queue, data)
6
+ end
7
+
8
+ def log_event(data)
9
+ post(events_queue, data)
10
+ end
11
+
12
+ def channel
13
+ @channel ||= begin
14
+ conn = Bunny.new
15
+ conn.start
16
+ conn.create_channel
17
+ end
18
+ end
19
+
20
+ def post(queue, message)
21
+ channel.queue(queue, durable: true).publish(message.to_json)
22
+ end
23
+
24
+ def visits_queue
25
+ "ahoy_visits"
26
+ end
27
+
28
+ def events_queue
29
+ "ahoy_events"
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,42 @@
1
+ module Ahoy
2
+ module Stores
3
+ class KinesisFirehoseStore < LogStore
4
+ def log_visit(data)
5
+ post(visits_stream, data)
6
+ end
7
+
8
+ def log_event(data)
9
+ post(events_stream, data)
10
+ end
11
+
12
+ def client
13
+ @client ||= Aws::Firehose::Client.new(credentials)
14
+ end
15
+
16
+ def post(stream, data)
17
+ client.put_record(
18
+ delivery_stream_name: stream,
19
+ record: {
20
+ data: "#{data.to_json}\n"
21
+ }
22
+ )
23
+ end
24
+
25
+ def credentials
26
+ {
27
+ access_key_id: ENV["AWS_ACCESS_KEY_ID"],
28
+ secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
29
+ region: "us-east-1"
30
+ }
31
+ end
32
+
33
+ def visits_stream
34
+ "ahoy_visits"
35
+ end
36
+
37
+ def events_stream
38
+ "ahoy_events"
39
+ end
40
+ end
41
+ end
42
+ end
data/lib/ahoy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ahoy
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.2"
3
3
  end
@@ -0,0 +1,15 @@
1
+ require "rails/generators"
2
+
3
+ module Ahoy
4
+ module Stores
5
+ module Generators
6
+ class BunnyGenerator < Rails::Generators::Base
7
+ source_root File.expand_path("../templates", __FILE__)
8
+
9
+ def create_initializer
10
+ template "bunny_initializer.rb", "config/initializers/ahoy.rb"
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ require "rails/generators"
2
+
3
+ module Ahoy
4
+ module Stores
5
+ module Generators
6
+ class KinesisFirehoseGenerator < Rails::Generators::Base
7
+ source_root File.expand_path("../templates", __FILE__)
8
+
9
+ def create_initializer
10
+ template "kinesis_firehose_initializer.rb", "config/initializers/ahoy.rb"
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ class Ahoy::Store < Ahoy::Stores::BunnyStore
2
+ def visits_queue
3
+ "ahoy_visits"
4
+ end
5
+
6
+ def events_queue
7
+ "ahoy_events"
8
+ end
9
+ end
@@ -0,0 +1,17 @@
1
+ class Ahoy::Store < Ahoy::Stores::KinesisFirehoseStore
2
+ def credentials
3
+ {
4
+ access_key_id: ENV["AWS_ACCESS_KEY_ID"],
5
+ secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
6
+ region: "us-east-1"
7
+ }
8
+ end
9
+
10
+ def visits_stream
11
+ "ahoy_visits"
12
+ end
13
+
14
+ def events_stream
15
+ "ahoy_events"
16
+ end
17
+ end
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: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-14 00:00:00.000000000 Z
11
+ date: 2016-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: browser
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.4.0
47
+ version: '2.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.4.0
54
+ version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: geocoder
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -205,12 +205,15 @@ files:
205
205
  - lib/ahoy/deckhands/utm_parameter_deckhand.rb
206
206
  - lib/ahoy/engine.rb
207
207
  - lib/ahoy/geocode_job.rb
208
+ - lib/ahoy/log_silencer.rb
208
209
  - lib/ahoy/logger_silencer.rb
209
210
  - lib/ahoy/model.rb
210
211
  - lib/ahoy/stores/active_record_store.rb
211
212
  - lib/ahoy/stores/active_record_token_store.rb
212
213
  - lib/ahoy/stores/base_store.rb
214
+ - lib/ahoy/stores/bunny_store.rb
213
215
  - lib/ahoy/stores/fluentd_store.rb
216
+ - lib/ahoy/stores/kinesis_firehose_store.rb
214
217
  - lib/ahoy/stores/log_store.rb
215
218
  - lib/ahoy/stores/mongoid_store.rb
216
219
  - lib/ahoy/subscribers/active_record.rb
@@ -222,8 +225,10 @@ files:
222
225
  - lib/generators/ahoy/stores/active_record_events_generator.rb
223
226
  - lib/generators/ahoy/stores/active_record_generator.rb
224
227
  - lib/generators/ahoy/stores/active_record_visits_generator.rb
228
+ - lib/generators/ahoy/stores/bunny_generator.rb
225
229
  - lib/generators/ahoy/stores/custom_generator.rb
226
230
  - lib/generators/ahoy/stores/fluentd_generator.rb
231
+ - lib/generators/ahoy/stores/kinesis_firehose_generator.rb
227
232
  - lib/generators/ahoy/stores/log_generator.rb
228
233
  - lib/generators/ahoy/stores/mongoid_events_generator.rb
229
234
  - lib/generators/ahoy/stores/mongoid_generator.rb
@@ -233,8 +238,10 @@ files:
233
238
  - lib/generators/ahoy/stores/templates/active_record_initializer.rb
234
239
  - lib/generators/ahoy/stores/templates/active_record_visit_model.rb
235
240
  - lib/generators/ahoy/stores/templates/active_record_visits_migration.rb
241
+ - lib/generators/ahoy/stores/templates/bunny_initializer.rb
236
242
  - lib/generators/ahoy/stores/templates/custom_initializer.rb
237
243
  - lib/generators/ahoy/stores/templates/fluentd_initializer.rb
244
+ - lib/generators/ahoy/stores/templates/kinesis_firehose_initializer.rb
238
245
  - lib/generators/ahoy/stores/templates/log_initializer.rb
239
246
  - lib/generators/ahoy/stores/templates/mongoid_event_model.rb
240
247
  - lib/generators/ahoy/stores/templates/mongoid_initializer.rb
@@ -262,10 +269,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
262
269
  version: '0'
263
270
  requirements: []
264
271
  rubyforge_project:
265
- rubygems_version: 2.4.5
272
+ rubygems_version: 2.6.1
266
273
  signing_key:
267
274
  specification_version: 4
268
275
  summary: Simple, powerful visit tracking for Rails
269
276
  test_files:
270
277
  - test/test_helper.rb
271
278
  - test/visit_properties_test.rb
279
+ has_rdoc: