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_queueObject



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

.redisObject



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_urlObject



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