module Deviant

Constants

DEFAULTS
VERSION

Public Class Methods

application(name) click to toggle source
# File lib/deviant/configuration.rb, line 26
def self.application(name)
  options[:name] = name
end
client() click to toggle source
# File lib/deviant.rb, line 12
def self.client
  @client ||= Client.new(options)
end
configure(&block) click to toggle source
# File lib/deviant/configuration.rb, line 21
def self.configure(&block)
  class_eval &block
  setup!
end
elasticsearch(url) click to toggle source
# File lib/deviant/configuration.rb, line 39
def self.elasticsearch(url)
  options[:elasticsearch_url] = url
end
exception(e, data = {}) click to toggle source
# File lib/deviant/log.rb, line 2
def self.exception(e, data = {})
  client.store e.class.name, e.message, data
end
method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/deviant/log.rb, line 6
def self.method_missing(method, *args, &block)
  if args.length > 0 && method.to_s[-1] == '!' && respond_to?(method.to_s[0...-1])
    send method.to_s[0...-1], *args, &block
    raise args.first
  end

  super
end
options() click to toggle source
# File lib/deviant/configuration.rb, line 13
def self.options
  @options ||= DEFAULTS.dup
end
options=(opts) click to toggle source
# File lib/deviant/configuration.rb, line 17
def self.options=(opts)
  @options = opts
end
redis(config) click to toggle source
# File lib/deviant/configuration.rb, line 30
def self.redis(config)
  if config.is_a?(Redis)
    client = config.client
    options[:redis_url] = "#{client.scheme}://#{client.host}:#{client.port}"
  else
    options[:redis_url] = config
  end
end
sidekiq(enabled, opts={}) click to toggle source
# File lib/deviant/configuration.rb, line 43
def self.sidekiq(enabled, opts={})
  options[:sidekiq][:enabled] = enabled
  options[:sidekiq][:configure_server] = opts[:configure_server] || false
  options[:sidekiq][:configure_client] = opts[:configure_client] || false
end

Private Class Methods

setup!() click to toggle source

A lot of 3rd party libraries are singletons, so we want to make sure we don’t blow away the main application’s config.

# File lib/deviant/configuration.rb, line 53
def self.setup!
  @client = nil

  if options[:sidekiq][:enabled]
    if options[:sidekiq][:configure_client]
      Sidekiq.configure_client do |config|
        config.redis = {
          namespace: options[:name],
          url: options[:redis_url]
        }
      end
    end

    if options[:sidekiq][:configure_server]
      Sidekiq.configure_server do |config|
        config.redis = {
          namespace: options[:name],
          url: options[:redis_url]
        }
      end
    end
  end

  if options[:elasticsearch_url]
    Tire.configure do
      url Deviant.options[:elasticsearch_url]
    end
  end
end