Module: Croket

Defined in:
lib/croket/rack.rb,
lib/croket.rb,
lib/croket/rails.rb,
lib/croket/railtie.rb,
lib/croket/version.rb,
lib/croket/configuration.rb,
lib/croket/rails/middleware.rb,
lib/croket/rails/controller_methods.rb,
lib/croket/rails/action_controller_catcher.rb

Overview

Created on 2015-04-08

@author: Nikolay Moskvin <[email protected]>

Defined Under Namespace

Modules: Rails Classes: Configuration, Rack, Railtie

Constant Summary collapse

VERSION =
"0.0.3"

Class Method Summary collapse

Class Method Details

.configurationObject



22
23
24
# File 'lib/croket.rb', line 22

def configuration
  @configuration ||= Configuration.new
end

.configure(silent = false) {|configuration| ... } ⇒ Object

Yields:



18
19
20
# File 'lib/croket.rb', line 18

def configure silent = false
  yield configuration 
end

.notify(exception, opts = {}) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/croket.rb', line 26

def notify exception, opts = {}
  l = configuration.logger
  l.debug "[CROKET] notify about '#{exception}' #{opts['rack.errors']}"
  if configuration.environment_blacklist.include? configuration.environment.to_sym
    l.debug "[CROKET] notification was disabled for '#{configuration.environment}'"
    return
  end
  controller = opts['action_controller.instance']
  request = ::Rack::Request.new(opts)
  params = request.env['action_dispatch.request.parameters']
  version = "Rails/#{::Rails.version}" if defined?(::Rails)
  begin
    r = RestClient::Request.execute url: "http://#{configuration.host}/v1/issues.json", method: :post,
      payload: {
        issue: {
          description: "#{exception}\n#{generate_description(request, controller, params, exception)}",
          category: 'crash',
          package: configuration.package,
          environment: configuration.environment,
          version: version
        }
    }, headers: {'Authorization' => "Token token=#{configuration.api_key}"}, content_type: :json, accept: :json
    r = JSON.parse r
    l.debug "[CROKET] id: #{r['issue']['id']}, number: #{r['issue']['tracker_number']}, dup: #{r['issue']['duplication']}"
  rescue RestClient::RequestFailed => e
    l.error "Request to http://#{configuration.host}/v1/issues.json was failed:" + e.message
  end
end