events_emitter

Easy events submissions.

Usage

require 'events_emitter'

EventsEmitter.event(key, value, emitter)

Interpretation of key and value depends on your backend. Emitter is a one of :graphite (default), :pixel, :redis.

Available emitters

Redis

To configure Redis:

EventsEmitter::Redis.config.update(host: "127.0.0.1", port: 6379, db: 1) # default

To add ‘element_name’ element to ‘set_name’ set invoke:

EventsEmitter.event("set_name", "element_name", :redis)

Pixel

To configure pixel emitter:

EventsEmitter::Pixel.config.update(url: "//my_host.com/my.gif") # default

To request image with ‘abcd’ fragment (my_host.com/my.gif#abcd):

EventsEmitter.event("abcd", nil, :pixel)

Graphite

To configure graphite emitter:

EventsEmitter::Graphite.config.update(
  graphite_host: 'graphite.example.com',
  graphite_port: 2003,
  memcached_uri: '127.0.0.1:11211',
  keys: ["key1"])

Whenever you run

EventsEmitter.event("key1", 1, :graphite)

EventEmitter will increment the key “key1” by 1 in memcache. To push the changes to graphite run:

EventEmitter::Graphite.new.send_batch

Creating new emitter

You can create new emitter:

module EventsEmitter
  class Custom
    def record(key, value)
      puts [key, value].join(" => ")
    end
  end
end

# This will print to stdout 'my_key => 2'
EventsEmitter.event("my_key", 2, :custom)

Contributing to events_emitter

See LICENSE.txt for further details.