Module: RailsLocalAnalytics

Defined in:
lib/rails_local_analytics.rb,
lib/rails_local_analytics/engine.rb,
lib/rails_local_analytics/version.rb,
app/jobs/rails_local_analytics/application_job.rb,
app/jobs/rails_local_analytics/record_request_job.rb,
app/models/rails_local_analytics/application_record.rb,
app/controllers/rails_local_analytics/dashboard_controller.rb,
app/controllers/rails_local_analytics/application_controller.rb

Defined Under Namespace

Classes: ApplicationController, ApplicationJob, ApplicationRecord, Config, DashboardController, Engine, RecordRequestJob

Constant Summary collapse

VERSION =
"1.0.0".freeze

Class Method Summary collapse

Class Method Details

.config(&block) ⇒ Object



36
37
38
39
40
41
42
43
44
# File 'lib/rails_local_analytics.rb', line 36

def self.config(&block)
  c = Config

  if block_given?
    block.call(c)
  else
    return c
  end
end

.record_request(request:, custom_attributes: nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/rails_local_analytics.rb', line 7

def self.record_request(request:, custom_attributes: nil)
  if request.is_a?(Hash)
    request_hash = request
  else
    ### Make request object generic so that it can be used outside of the controller

    request_hash = {
      referrer: request.referrer,
      host: request.host,
      path: request.path,
      user_agent: request.user_agent,
      http_accept_language: request.env["HTTP_ACCEPT_LANGUAGE"],
    }
  end

  json_hash = {
    day: Date.today.to_s,
    request_hash: request_hash,
    custom_attributes: custom_attributes,
  }

  if RailsLocalAnalytics.config.background_jobs
    json_str = JSON.generate(json_hash) # convert to json string so that its compatible with all job backends
    RecordRequestJob.perform_later(json_str)
  else
    RecordRequestJob.new.perform(json_hash.deep_stringify_keys)
  end
end