rails_riemann_middleware 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5c54c3065cac2c767f26a82c65b1b2e2aba85dd0
4
+ data.tar.gz: 205f6789a8724cfd452fde70c767cee6f48aaa2f
5
+ SHA512:
6
+ metadata.gz: 2f894756e9f09ee625ef4f2f77d950568b6ae2765153da66e3189f11e8d147e13eb55d867a005766020b0e2cfcb10bfb9fddcc7c231fa18eb41616d7800aa66b
7
+ data.tar.gz: 2f68c002683ccfe1d398575e3d01b80efc8a8fe139795341c08fca367ff187e6f2ca1f8f2d947e917ce4ae81c6fcd5ce82ebfd7a598aedfb3d6b53f80d4483fd
data/README.md CHANGED
@@ -22,8 +22,36 @@ Or install it yourself as:
22
22
 
23
23
  Add the following to your specific rails enviroment.
24
24
 
25
+ config.riemann_options = (:riemann_host => "riemann_host_name")
26
+
25
27
  config.middleware.use(RailsRiemannMiddleware::Notifier,
26
- :riemann_host => "riemann_host_name")
28
+ config.riemann_options)
29
+
30
+ If you would like to pull custom headers out of the env for reporting,
31
+ you can add
32
+
33
+ :additional_headers => ['SOME_HEADER', 'SOME_OTHER_HEADER']
34
+
35
+ Those will be reported for both exceptions and duration events. If the
36
+ header is not defined, it will be reported as 'N/A'.
37
+
38
+ ## ExceptionNotification 3.x API
39
+
40
+ If you, like us, are transitioning from the exception\_notification gem,
41
+ we support the API from the 3.x version of that gem for explicit calls
42
+ to the exception notifier. For example, if you are catching exceptions in
43
+ your controllers (preventing them from bubbling up automatically), you can
44
+ call:
45
+
46
+ RailsRiemannMiddleware::RailsExceptionNotifier.exception_notification(env, error)
47
+
48
+ In your models or other background processes, you can call:
49
+
50
+ RailsRiemannMiddleware::RailsExceptionNotifier.background_exception_notification(error)
51
+
52
+ To use this extra functionality, you have to
53
+
54
+ require 'rails_riemann_middleware/rails_exception_notifier'
27
55
 
28
56
  ## Running Tests
29
57
 
@@ -3,10 +3,11 @@ require "rails_riemann_middleware/headers"
3
3
  module RailsRiemannMiddleware
4
4
 
5
5
  class Duration
6
- attr_reader :event, :env, :start_time
6
+ attr_reader :event, :env, :start_time, :headers
7
7
 
8
- def initialize(event, env, start_time)
8
+ def initialize(event, env, start_time, options={})
9
9
  @event, @env, @start_time = event, env, start_time
10
+ @headers = options.fetch(:headers, [])
10
11
  end
11
12
 
12
13
  def send
@@ -22,7 +23,7 @@ module RailsRiemannMiddleware
22
23
  :state => 'info',
23
24
  :metric => duration,
24
25
  :tags => ["duration"],
25
- :description => Headers.new(env).to_s
26
+ :description => Headers.new(env, headers).to_s
26
27
  }
27
28
  msg
28
29
  end
@@ -3,10 +3,11 @@ require "rails_riemann_middleware/headers"
3
3
  module RailsRiemannMiddleware
4
4
 
5
5
  class ExceptionNotification
6
- attr_reader :event, :env, :exception
6
+ attr_reader :event, :env, :exception, :headers
7
7
 
8
- def initialize(event, env, exception)
8
+ def initialize(event, env, exception, options={})
9
9
  @event, @env, @exception = event, env, exception
10
+ @headers = options.fetch(:headers, [])
10
11
  end
11
12
 
12
13
  def send
@@ -34,7 +35,7 @@ module RailsRiemannMiddleware
34
35
  def backtrace
35
36
  e = ["#{exception.to_s}"]
36
37
  e << "----------------------------------------"
37
- e += Headers.new(env).to_a
38
+ e += Headers.new(env, headers).to_a
38
39
  e << "----------------------------------------\n"
39
40
  e += exception.backtrace
40
41
  e.join("\n")[0..8000]
@@ -2,14 +2,15 @@ module RailsRiemannMiddleware
2
2
 
3
3
  class Headers
4
4
 
5
- attr_reader :env
5
+ attr_reader :env, :custom_headers
6
6
 
7
- def initialize(env)
7
+ def initialize(env, custom_headers=[])
8
8
  @env = env
9
+ @custom_headers = custom_headers
9
10
  end
10
11
 
11
12
  def keys
12
- %w{REQUEST_METHOD REQUEST_URI PATH_INFO HTTP_X_REAL_IP HTTP_USER_AGENT HTTP_REFERER}
13
+ %w{REQUEST_METHOD REQUEST_URI PATH_INFO HTTP_X_REAL_IP HTTP_USER_AGENT HTTP_REFERER} + custom_headers
13
14
  end
14
15
 
15
16
  def to_a
@@ -0,0 +1,25 @@
1
+ module RailsRiemannMiddleware
2
+ class RailsExceptionNotifier
3
+ def self.exception_notification(env, exception, options={})
4
+ app = options.fetch(:app) {Rails.application}
5
+ options = app.config.riemann_options.merge(options)
6
+ headers = options.delete(:additional_headers)
7
+
8
+ event = Event.new(options)
9
+
10
+ ExceptionNotification.new(event, env, exception,
11
+ headers: headers)
12
+ end
13
+
14
+ def self.background_exception_notification(exception, options={})
15
+ app = options.fetch(:app) {Rails.application}
16
+ options = app.config.riemann_options.merge(options)
17
+ headers = options.delete(:additional_headers)
18
+
19
+ event = Event.new(options)
20
+ env = {}
21
+
22
+ ExceptionNotification.new(event, env, exception)
23
+ end
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module RailsRiemannMiddleware
2
- VERSION = "0.6.0"
2
+ VERSION = "0.7.0"
3
3
  end
@@ -6,7 +6,7 @@ require "rails_riemann_middleware/exception_notification"
6
6
  module RailsRiemannMiddleware
7
7
 
8
8
  class Notifier
9
- attr_reader :event, :send_durations, :send_exceptions
9
+ attr_reader :event, :send_durations, :send_exceptions, :options
10
10
 
11
11
  def initialize(app, options = {})
12
12
  @app, @options = app, options
@@ -19,22 +19,10 @@ module RailsRiemannMiddleware
19
19
  start_time = Time.now
20
20
  @app.call(env)
21
21
  rescue Exception => exception
22
- ExceptionNotification.new(event, env, exception).send if send_exceptions
22
+ ExceptionNotification.new(event, env, exception, options).send if send_exceptions
23
23
  raise exception
24
24
  ensure
25
- Duration.new(event, env, start_time).send if send_durations
26
- end
27
-
28
- def self.exception_notification(env, exception)
29
- event = Event.new
30
- ExceptionNotification.new(event, env, exception)
31
- end
32
-
33
- def self.background_exception_notification(exception)
34
- event = Event.new
35
- env = {}
36
- ExceptionNotification.new(event, env, exception)
25
+ Duration.new(event, env, start_time, options).send if send_durations
37
26
  end
38
27
  end
39
-
40
28
  end
@@ -1,8 +1,27 @@
1
1
  require_relative 'spec_helper'
2
2
  require 'rails_riemann_middleware'
3
+ require 'rails_riemann_middleware/rails_exception_notifier'
4
+
5
+ class DummyAppConfig
6
+ def riemann_options
7
+ {}
8
+ end
9
+ end
10
+
11
+ class DummyApplication
12
+ def config
13
+ DummyAppConfig.new
14
+ end
15
+ end
16
+
17
+ module Rails
18
+ def self.application
19
+ DummyApplication.new
20
+ end
21
+ end
3
22
 
4
23
  module RailsRiemannMiddleware
5
- describe Notifier do
24
+ describe RailsExceptionNotifier do
6
25
  let(:exception_notification_new) { MiniTest::Mock.new }
7
26
  let(:error) { Object.new }
8
27
 
@@ -15,7 +34,7 @@ module RailsRiemannMiddleware
15
34
  end
16
35
 
17
36
  ExceptionNotification.stub(:new, exception_notification_new) do
18
- Notifier.exception_notification(env, error)
37
+ RailsExceptionNotifier.exception_notification(env, error)
19
38
  end
20
39
  exception_notification_new.verify
21
40
  end
@@ -28,7 +47,7 @@ module RailsRiemannMiddleware
28
47
  end
29
48
 
30
49
  ExceptionNotification.stub(:new, exception_notification_new) do
31
- Notifier.background_exception_notification(error)
50
+ RailsExceptionNotifier.background_exception_notification(error)
32
51
  end
33
52
  exception_notification_new.verify
34
53
  end
metadata CHANGED
@@ -1,27 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_riemann_middleware
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
5
- prerelease:
4
+ version: 0.7.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Richard Outten
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-08-29 00:00:00.000000000 Z
11
+ date: 2014-04-21 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: riemann-client
16
- requirement: &70117650213820 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
19
  version: 0.2.0
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70117650213820
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 0.2.0
25
27
  description: Rack middleware for sending data to riemann
26
28
  email:
27
29
  - outtenr@gmail.com
@@ -39,36 +41,36 @@ files:
39
41
  - lib/rails_riemann_middleware/event.rb
40
42
  - lib/rails_riemann_middleware/exception_notification.rb
41
43
  - lib/rails_riemann_middleware/headers.rb
44
+ - lib/rails_riemann_middleware/rails_exception_notifier.rb
42
45
  - lib/rails_riemann_middleware/version.rb
43
46
  - rails_riemann_middleware.gemspec
44
47
  - specs/duration_spec.rb
45
48
  - specs/exception_notification_spec.rb
46
- - specs/notifier_spec.rb
49
+ - specs/rails_exception_notifier_spec.rb
47
50
  - specs/spec_helper.rb
48
51
  homepage: ''
49
52
  licenses:
50
53
  - MIT
54
+ metadata: {}
51
55
  post_install_message:
52
56
  rdoc_options: []
53
57
  require_paths:
54
58
  - lib
55
59
  required_ruby_version: !ruby/object:Gem::Requirement
56
- none: false
57
60
  requirements:
58
- - - ! '>='
61
+ - - '>='
59
62
  - !ruby/object:Gem::Version
60
63
  version: '0'
61
64
  required_rubygems_version: !ruby/object:Gem::Requirement
62
- none: false
63
65
  requirements:
64
- - - ! '>='
66
+ - - '>='
65
67
  - !ruby/object:Gem::Version
66
68
  version: '0'
67
69
  requirements: []
68
70
  rubyforge_project:
69
- rubygems_version: 1.8.11
71
+ rubygems_version: 2.0.3
70
72
  signing_key:
71
- specification_version: 3
73
+ specification_version: 4
72
74
  summary: Rack middleware for sending data to riemann
73
75
  test_files: []
74
76
  has_rdoc: