ministryofjustice/Claim-for-Crown-Court-Defence

View on GitHub
app/models/google_analytics/data_tracking.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
94%
module GoogleAnalytics
  class DataTracking
    cattr_accessor :adapter, :adapter_name, :usage_name

    class << self
      def enabled?
        usage_name && adapter.present? && Rails.env.production?
      end

      def tag_manager?
        enabled? && adapter_name.eql?(:gtm)
      end

      def analytics?
        enabled? && adapter_name.eql?(:ga)
      end

      def track(*)
        return unless enabled?
        raise ArgumentError, 'Uninitialized adapter' unless adapter
        adapter.new(*)
      end

      def adapter=(name)
        @@adapter_name = name
        @@adapter = "GoogleAnalytics::#{name.upcase}DataAdapter".constantize
      end
    end

    private_class_method :new
  end
end