Module: ActiveAnalytics
- Defined in:
- lib/active_analytics.rb,
lib/active_analytics/engine.rb,
lib/active_analytics/version.rb,
app/helpers/active_analytics/pages_helper.rb,
app/helpers/active_analytics/sites_helper.rb,
app/jobs/active_analytics/application_job.rb,
app/models/active_analytics/views_per_day.rb,
app/helpers/active_analytics/referrers_helper.rb,
app/models/active_analytics/application_record.rb,
app/helpers/active_analytics/application_helper.rb,
app/mailers/active_analytics/application_mailer.rb,
app/controllers/active_analytics/pages_controller.rb,
app/controllers/active_analytics/sites_controller.rb,
app/controllers/active_analytics/assets_controller.rb,
app/controllers/active_analytics/referrers_controller.rb,
app/controllers/active_analytics/application_controller.rb
Defined Under Namespace
Modules: ApplicationHelper, PagesHelper, ReferrersHelper, SitesHelper
Classes: ApplicationController, ApplicationJob, ApplicationMailer, ApplicationRecord, AssetsController, Engine, PagesController, ReferrersController, SitesController, ViewsPerDay
Constant Summary
collapse
- SEPARATOR =
"|"
- QUEUE =
"ActiveAnalytics::Queue"
- OLD_QUEUE =
"ActiveAnalytics::OldQueue"
- VERSION =
'0.3.0'
Class Method Summary
collapse
Class Method Details
.flush_queue ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/active_analytics.rb', line 52
def self.flush_queue
return if !redis.exists?(QUEUE)
cursor = 0
date = Date.today
redis.rename(QUEUE, OLD_QUEUE)
redis.hscan_each(OLD_QUEUE) do |key, count|
site, page, referrer_host, referrer_path = key.split(SEPARATOR)
ViewsPerDay.append(date: date, site: site, page: page, referrer_host: referrer_host, referrer_path: referrer_path, total: count.to_i)
end
redis.del(OLD_QUEUE)
end
|
.queue_request(request) ⇒ Object
44
45
46
47
48
49
50
|
# File 'lib/active_analytics.rb', line 44
def self.queue_request(request)
keys = [request.host, request.path]
if request.referrer.present?
keys.concat(ViewsPerDay.split_referrer(request.referrer))
end
redis.hincrby(QUEUE, keys.join(SEPARATOR).downcase, 1)
end
|
.record_request(request) ⇒ Object
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/active_analytics.rb', line 21
def self.record_request(request)
params = {
site: request.host,
page: request.path,
date: Date.today,
}
if request.referrer.present?
params[:referrer_host], params[:referrer_path] = ViewsPerDay.split_referrer(request.referrer)
end
ViewsPerDay.append(params)
rescue => ex
if Rails.env.development? || Rails.env.test?
raise ex
else
Rails.logger.error(ex.inspect)
Rails.logger.error(ex.backtrace.join("\n"))
end
end
|
.redis ⇒ Object
17
18
19
|
# File 'lib/active_analytics.rb', line 17
def self.redis
@redis ||= Redis.new(url: redis_url)
end
|
.redis=(connection) ⇒ Object
13
14
15
|
# File 'lib/active_analytics.rb', line 13
def self.redis=(connection)
@redis = connection
end
|
.redis_url ⇒ Object
9
10
11
|
# File 'lib/active_analytics.rb', line 9
def self.redis_url
@redis_url ||= ENV["ACTIVE_ANALYTICS_REDIS_URL"] || ENV["REDIS_URL"] || "redis://localhost"
end
|
.redis_url=(string) ⇒ Object
5
6
7
|
# File 'lib/active_analytics.rb', line 5
def self.redis_url=(string)
@redis_url = string
end
|