Sha256: b04a4abffa8424748f4a3b06f9782c050fba5a787e8c4011694e2dff7d8e20a8

Contents?: true

Size: 1.64 KB

Versions: 3

Compression:

Stored size: 1.64 KB

Contents

# encoding: utf-8
require 'logger'

require 'framed/version'
require 'framed/rails' if defined?(::Rails)
require 'framed/railtie' if defined?(::Rails::Railtie)
require 'framed/client'
require 'framed/emitters'
require 'framed/utils'

module Framed
  SEGMENT_API_ENDPOINT = 'https://api.segment.io/v1/track'
  FRAMED_API_ENDPOINT = 'https://intake.framed.io/events'
  COOKIE_NAME = 'framed_id'

  class << self
    attr_accessor :client, :consumer

    def configuration
      @configuration ||= {
        :consumer => Framed::Emitters::Blocking,
        :user_id_controller_method => 'framed_devise_user_id',
        :endpoint => Framed::FRAMED_API_ENDPOINT,
        :logger => Logger.new(STDERR),
        :anonymous_cookie => Framed::COOKIE_NAME
      }
    end

    def configure(silent = false)
      yield configuration
      self.client = Client.new(configuration)

      @consumer.stop if @consumer
      @consumer = configuration[:consumer].new(self.client)
    end

    def report(event)
      event[:lib] =  "framed_ruby"
      event[:lib_version] = Framed::VERSION
      event[:context] ||= {}
      event[:context].merge!({
        :channel => 'server',
      })

      # fill in if needed, in case it sits in queue for a while.
      event[:timestamp] ||= Framed::Utils.serialize_date(Time.now)

      @consumer.enqueue(event)
    end

    def logger
      configuration[:logger]
    end

    def drain
      @consumer.stop(true)
    end

    def user_id_controller_method
      configuration[:user_id_controller_method]
    end

    def anonymous_cookie
      configuration[:anonymous_cookie]
    end

    def new_anonymous_id
      Framed::Utils.uuid
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
framed_rails-0.1.3 lib/framed_rails.rb
framed_rails-0.1.2 lib/framed_rails.rb
framed_rails-0.1.0 lib/framed_rails.rb