Module: ActiveAnalytics
- Defined in:
- lib/active_analytics.rb,
lib/active_analytics/engine.rb,
lib/active_analytics/version.rb,
app/lib/active_analytics/histogram.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/browsers_helper.rb,
app/models/active_analytics/browsers_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/browsers_controller.rb,
app/controllers/active_analytics/referrers_controller.rb,
app/controllers/active_analytics/application_controller.rb
Defined Under Namespace
Modules: ApplicationHelper, BrowsersHelper, PagesHelper, ReferrersHelper, SitesHelper
Classes: ApplicationController, ApplicationJob, ApplicationMailer, ApplicationRecord, AssetsController, BrowsersController, BrowsersPerDay, Engine, Histogram, PagesController, ReferrersController, SitesController, ViewsPerDay
Constant Summary
collapse
- SEPARATOR =
"|"
- PAGE_QUEUE =
"ActiveAnalytics::PageQueue"
- BROWSER_QUEUE =
"ActiveAnalytics::BrowserQueue"
- OLD_PAGE_QUEUE =
"ActiveAnalytics::OldPageQueue"
- OLD_BROWSER_QUEUE =
"ActiveAnalytics::BrowserQueue"
- VERSION =
'0.4.1'
Class Method Summary
collapse
Class Method Details
.flush_browser_queue ⇒ Object
.flush_page_queue ⇒ Object
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/active_analytics.rb', line 78
def self.flush_page_queue
return if !redis.exists?(PAGE_QUEUE)
date = Date.today
redis.rename(PAGE_QUEUE, OLD_PAGE_QUEUE)
redis.hscan_each(OLD_PAGE_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_PAGE_QUEUE)
end
|
.flush_queue ⇒ Object
73
74
75
76
|
# File 'lib/active_analytics.rb', line 73
def self.flush_queue
flush_page_queue
flush_browser_queue
end
|
.queue_request(request) ⇒ Object
54
55
56
57
|
# File 'lib/active_analytics.rb', line 54
def self.queue_request(request)
queue_request_page(request)
queue_request_browser(request)
end
|
.queue_request_browser(request) ⇒ Object
67
68
69
70
71
|
# File 'lib/active_analytics.rb', line 67
def self.queue_request_browser(request)
browser = Browser.new(request.["User-Agent"])
keys = [request.host.downcase, browser.name, browser.version]
redis.hincrby(BROWSER_QUEUE, keys.join(SEPARATOR), 1)
end
|
.queue_request_page(request) ⇒ Object
59
60
61
62
63
64
65
|
# File 'lib/active_analytics.rb', line 59
def self.queue_request_page(request)
keys = [request.host, request.path]
if request.referrer.present?
keys.concat(ViewsPerDay.split_referrer(request.referrer))
end
redis.hincrby(PAGE_QUEUE, keys.join(SEPARATOR).downcase, 1)
end
|
.record_request(request) ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/active_analytics.rb', line 24
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)
browser = Browser.new(request.["User-Agent"])
BrowsersPerDay.append(site: request.host, date: Date.today, name: browser.name, version: browser.version)
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
20
21
22
|
# File 'lib/active_analytics.rb', line 20
def self.redis
@redis ||= Redis.new(url: redis_url)
end
|
.redis=(connection) ⇒ Object
16
17
18
|
# File 'lib/active_analytics.rb', line 16
def self.redis=(connection)
@redis = connection
end
|
.redis_url ⇒ Object
12
13
14
|
# File 'lib/active_analytics.rb', line 12
def self.redis_url
@redis_url ||= ENV["ACTIVE_ANALYTICS_REDIS_URL"] || ENV["REDIS_URL"] || "redis://localhost"
end
|
.redis_url=(string) ⇒ Object
8
9
10
|
# File 'lib/active_analytics.rb', line 8
def self.redis_url=(string)
@redis_url = string
end
|