exception_notification-idobata 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ade18db9b418ae3b8003b3b97ad2a38292251fdf
|
4
|
+
data.tar.gz: 5efb9417aef0b6126fac3dee7dbead6fa2e4948f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86f70e6b9446b1b82839920b5a3b6306ba4c552e3830dc549f321680b7a3010d602c6d77a885b437ff02b8a18b01f528fd8e550e4a7c65d17f994d3f448e128f
|
7
|
+
data.tar.gz: 1624ff334d5c43396a2af11db0670425c04132aa55a62929468b19d278e12d8b5bc08c19e1fbe999e3686a3627bac1623710a98903ade2e56f381dedfc437549
|
data/README.md
CHANGED
@@ -4,20 +4,26 @@
|
|
4
4
|
|
5
5
|
Add this line to your application's Gemfile:
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
```ruby
|
8
|
+
gem 'exception_notification'
|
9
|
+
gem 'exception_notification-idobata'
|
10
|
+
```
|
9
11
|
And then execute:
|
10
12
|
|
11
|
-
|
13
|
+
```
|
14
|
+
$ bundle
|
15
|
+
```
|
12
16
|
|
13
17
|
## Usage
|
14
18
|
|
19
|
+
This plugin works by putting the following lines in your `config/environments/production.rb`
|
20
|
+
|
15
21
|
```ruby
|
16
22
|
Sample::Application.configure do
|
17
|
-
config.middleware.use
|
18
|
-
ExceptionNotification::Rack,
|
23
|
+
config.middleware.use ExceptionNotification::Rack,
|
19
24
|
idobata: {
|
20
|
-
url:
|
25
|
+
url: HOOK_ENDPOINT,
|
26
|
+
stage: 'Optional params as you like'
|
21
27
|
}
|
22
28
|
end
|
23
29
|
```
|
@@ -6,7 +6,37 @@ module ExceptionNotifier
|
|
6
6
|
attr_reader :url
|
7
7
|
|
8
8
|
def initialize(options)
|
9
|
-
@url = options
|
9
|
+
unless @url = options.delete(:url)
|
10
|
+
raise ArgumentError, 'Endpoint must be specified'
|
11
|
+
end
|
12
|
+
|
13
|
+
@options = options
|
14
|
+
end
|
15
|
+
|
16
|
+
def call(exception, options={})
|
17
|
+
enviroments =
|
18
|
+
if options[:env]
|
19
|
+
request_option(ActionDispatch::Request.new(options[:env]))
|
20
|
+
else
|
21
|
+
# [TODO] - Add option specification route for non-web notification
|
22
|
+
{'Timestamp' => Time.zone.now}
|
23
|
+
end
|
24
|
+
|
25
|
+
source = build_message(exception, enviroments)
|
26
|
+
|
27
|
+
RestClient.post @url, source: source, format: 'html'
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def request_option(request)
|
33
|
+
{
|
34
|
+
'URL' => request.original_url,
|
35
|
+
'HTTP Method' => request.method,
|
36
|
+
'IP Address' => request.remote_ip,
|
37
|
+
'Paramters' => request.filtered_parameters,
|
38
|
+
'Timestamp' => Time.zone.now
|
39
|
+
}
|
10
40
|
end
|
11
41
|
|
12
42
|
def build_message(exception, enviroments)
|
@@ -20,30 +50,12 @@ module ExceptionNotifier
|
|
20
50
|
<h4>Environments:</h4>
|
21
51
|
<table>
|
22
52
|
<tbody>
|
23
|
-
#{table_rows_from(enviroments)}
|
53
|
+
#{table_rows_from(@options.merge(enviroments))}
|
24
54
|
</tbody>
|
25
55
|
</table>
|
26
56
|
HTML
|
27
57
|
end
|
28
58
|
|
29
|
-
def call(exception, options={})
|
30
|
-
env = options[:env]
|
31
|
-
|
32
|
-
request = ActionDispatch::Request.new(env)
|
33
|
-
|
34
|
-
source = build_message(exception,
|
35
|
-
'URL' => request.original_url,
|
36
|
-
'HTTP Method' => request.method,
|
37
|
-
'IP Address' => request.remote_ip,
|
38
|
-
'Paramters' => request.filtered_parameters,
|
39
|
-
'Timestamp' => Time.zone.now
|
40
|
-
)
|
41
|
-
|
42
|
-
RestClient.post @url, source: source, format: 'html'
|
43
|
-
end
|
44
|
-
|
45
|
-
private
|
46
|
-
|
47
59
|
def table_rows_from(hash)
|
48
60
|
hash.each_with_object('') { |(key, value), rows|
|
49
61
|
rows << "<tr><th>#{key}</th><td>#{value}</td></tr>"
|
@@ -1,7 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe ExceptionNotifier::IdobataNotifier do
|
4
|
-
let(:notifier)
|
4
|
+
let(:notifier) do
|
5
|
+
described_class.new(
|
6
|
+
:url => 'https://idobata.io/hook/endpoint',
|
7
|
+
'Rails ENV' => 'staging'
|
8
|
+
)
|
9
|
+
end
|
5
10
|
|
6
11
|
describe '#initialize' do
|
7
12
|
it 'should set url' do
|
@@ -22,7 +27,7 @@ describe ExceptionNotifier::IdobataNotifier do
|
|
22
27
|
}
|
23
28
|
}
|
24
29
|
|
25
|
-
subject { notifier.build_message
|
30
|
+
subject { notifier.send(:build_message, exception, enviroments) }
|
26
31
|
|
27
32
|
before do
|
28
33
|
allow(exception).to receive(:backtrace).and_return(backtrace)
|
@@ -38,7 +43,7 @@ describe ExceptionNotifier::IdobataNotifier do
|
|
38
43
|
<h4>Environments:</h4>
|
39
44
|
<table>
|
40
45
|
<tbody>
|
41
|
-
<tr><th>URL</th><td>http://hrysd.org</td></tr><tr><th>HTTP Method</th><td>GET</td></tr><tr><th>IP Address</th><td>127.0.0.1</td></tr><tr><th>Paramters</th><td>{"controller"=>"welcome", "action"=>"index"}</td></tr><tr><th>Timestamp</th><td>2014-03-16 16:30:35 +900</td></tr>
|
46
|
+
<tr><th>Rails ENV</th><td>staging</td></tr><tr><th>URL</th><td>http://hrysd.org</td></tr><tr><th>HTTP Method</th><td>GET</td></tr><tr><th>IP Address</th><td>127.0.0.1</td></tr><tr><th>Paramters</th><td>{"controller"=>"welcome", "action"=>"index"}</td></tr><tr><th>Timestamp</th><td>2014-03-16 16:30:35 +900</td></tr>
|
42
47
|
</tbody>
|
43
48
|
</table>
|
44
49
|
HTML
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exception_notification-idobata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroshi Yoshida
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: exception_notification
|