Sha256: 8c0313b151e88508d240a2749699b60f4d14dbc53809faa63e074ef1d5fa0379

Contents?: true

Size: 1.12 KB

Versions: 2

Compression:

Stored size: 1.12 KB

Contents

require 'nadir/config'
require 'nadir/middleware/rack'
require 'nadir/notification'
require 'nadir/transport/http_async'
require 'nadir/version'

module Nadir
  extend self

  def config
    @config ||= Config.new
  end

  def configure
    yield config if block_given?
  end

  def logger
    config.logger
  end

  def notify(exception, params = {})
    return false unless config.validate

    notification = Notification.new(exception, process_params(params))

    transport.deliver notification.to_params

    true
  rescue => e
    logger.error "[Nadir] Internal error: #{e.inspect}"

    false
  end

  def process_params(params)
    ctx = Thread.current[:nadir_context]

    if ctx
      params[:job] = ctx.delete(:job) if ctx[:job]
      params[:context] = ctx if ctx
    end

    params
  end

  def with_context(payload)
    Thread.current[:nadir_context] = payload
    yield
  ensure
    Thread.current[:nadir_context] = nil
  end

  private

  def transport
    @_transport ||= Nadir::Transport::HTTPAsync.new
  end
end

require 'nadir/plugins/rails' if defined? Rails::Railtie
require 'nadir/plugins/rake' if defined? Rake::Application

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
nadir-1.2.1 lib/nadir.rb
nadir-1.2.0 lib/nadir.rb