Socket
Book a DemoInstallSign in
Socket

analytic

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

analytic

0.5.0
bundlerRubygems
Version published
Maintainers
1
Created
Source

CircleCI CodeClimate Maintainability CodeClimate Test Coverage

Analytic

Demo

Analytic provides visitor / session / view tracking without the need for any third-party service.

Installation

$ bundle add analytic
$ bin/rails analytic:install:migrations
$ bin/rails db:migrate
# config/routes.rb
Rails.application.routes.draw do
  mount Analytic::Engine, at: '/analytic'
end

Usage

Default inline tracking is configured with:

class ApplicationController
  include Analytic::Trackable

  before_action :analytic_track!, if: -> { request.format.html? }
end

Alternative job tracking is configured with:

class ApplicationController
  include Analytic::Trackable

  before_action :analytic_enqueue_track_job!, if: -> { request.format.html? }
end

note: a queue such as sidekiq, rescue, etc must be running to see tracking

Configuration

Authentication the Dashboard

By default Analytic is not authenticated. To authenticate using Rack::Auth generate a random username and password:

$ bin/rails secret # generate a secret
$ bin/rails credentials:edit
analytic:
  username: abc...
  password: def...
# config/initializers/analytic.rb

def same?(src, dst)
  # https://api.rubyonrails.org/classes/ActiveSupport/SecurityUtils.html
  ActiveSupport::SecurityUtils.secure_compare(src, dst)
end

Analytic.configure do |config|
  unless Rails.env.local?
    config.use Rack::Auth::Basic do |username, password|
      credentials = Rails.application.credentials.analytic
      same?(username, credentials.username) && same?(password, credentials.password)
    end
  end
end

Capturing Extra Parameters

By default Analytic tracks utm_source, utm_medium, utm_campaign, utm_content, utm_term, ref and source parameters for each request. This list can be customized using:

# config/initializer/analytic.rb
Analytic.configure do |config|
  config.params << :gclid # e.g. Google
  config.params << :msclkid # e.g. Bing
end

Changing the Time Zone

By default Analytic uses Time.zone. The time zone can be changed using:

# config/application.rb
class Application < Rails::Application
  config.time_zone = 'Canada/Pacific'
end

The time zone may also be specified for Analytic using any ActiveSupport::TimeZone:

# config/initializer/analytic.rb
Analytic.configure do |config|
  config.time_zone = Time.find_zone('Canada/Pacific')
end

Changing the Database

By default Analytic uses your apps main database. The database can be changed using:

# config/initializer/analytic.rb
Analytic.configure do |config|
  config.connects_to = { database: { writing: :primary, reading: :replica } }
end

Overriding IP Masking Rules

By default IP addresses are masked as follows:

  • IPv4: limit to leading 24-bits (e.g. '255.255.255.255' becomes '255.255.255.0')
  • IPv6: limit to leading 48-bits (e.g. 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' becomes 'ffff:ffff:ffff:0000:0000:0000:0000:0000')

To override both an ip_v4_mask and ip_v6_mask are assignable:

Analytic.configure do |config|
  config.ip_v4_mask = 24 # nil skips masking
  config.ip_v6_mask = 48 # nil skips masking

License

The gem is available as open source under the terms of the MIT License.

FAQs

Package last updated on 28 Oct 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.