exception-track 0.5.2 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/exception-track/application.css +22 -10
- data/app/controllers/exception_track/logs_controller.rb +5 -0
- data/app/views/exception_track/logs/index.html.erb +3 -0
- data/config/routes.rb +1 -0
- data/lib/exception-track/version.rb +1 -1
- data/lib/exception_notifier/exception_track_notifier.rb +18 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d153785e412ef19575e9fa1c1c09efd6e4c6641ca6b7ef0f2874ed8c48ded09a
|
4
|
+
data.tar.gz: ec5ffb28de5d0e292edcd088156163158ace9068487759df0aaaf8e658595c90
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2570f322779022af1c78361dff981300b7967c0fb4fa1710be7571945fc56431d9c54bf2a2ac9aa0a5d8d02d7e6c351ac6ced157d9dd992d43d4396da1a4cc4c
|
7
|
+
data.tar.gz: 32544198077f5147a86adafdd65f5dad1a71c82f893bb80a9ed2f2bb432f2ffd081e277cbe580ae4b10c7ab44097537a9f66021eff4368dbc721f77aa203232c
|
@@ -6,7 +6,7 @@ body {
|
|
6
6
|
}
|
7
7
|
|
8
8
|
body, textarea {
|
9
|
-
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
|
9
|
+
font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, Helvetica, sans-serif;
|
10
10
|
font-size: 14px;
|
11
11
|
line-height: 1.4;
|
12
12
|
color: #333;
|
@@ -38,7 +38,7 @@ table {
|
|
38
38
|
|
39
39
|
th {
|
40
40
|
text-align: left;
|
41
|
-
border-bottom: solid 1px #
|
41
|
+
border-bottom: solid 1px #e0e0e0;
|
42
42
|
}
|
43
43
|
|
44
44
|
td.date { width: 150px; font-size: 12px; }
|
@@ -66,9 +66,9 @@ ul {
|
|
66
66
|
table td, table th {
|
67
67
|
padding: 10px 15px;
|
68
68
|
}
|
69
|
-
th { background: #f5f5f5; border-bottom: 1px solid #
|
69
|
+
th { background: #f5f5f5; border-bottom: 1px solid #e0e0e0; }
|
70
70
|
td {
|
71
|
-
border-top: solid 1px #
|
71
|
+
border-top: solid 1px #e0e0e0;
|
72
72
|
}
|
73
73
|
|
74
74
|
pre {
|
@@ -108,12 +108,16 @@ hr {
|
|
108
108
|
user-select: none;
|
109
109
|
border-radius: 3px;
|
110
110
|
border: 1px solid #ccc;
|
111
|
-
padding:
|
111
|
+
padding: 6px 16px;
|
112
|
+
color: #555 !important;
|
112
113
|
outline: 0 !important;
|
113
114
|
background: #FFF;
|
114
115
|
}
|
115
|
-
.btn:hover { text-decoration: none; }
|
116
|
-
.btn-danger { background: #
|
116
|
+
.btn:hover { text-decoration: none !important; background: #f7f7f7; }
|
117
|
+
.btn-danger { background: #fff; color: #E33F00 !important; border-color: #E33F00;}
|
118
|
+
.btn-danger:hover {
|
119
|
+
background: #FCEDEC;
|
120
|
+
}
|
117
121
|
|
118
122
|
.container {
|
119
123
|
max-width: 1000px;
|
@@ -121,6 +125,8 @@ hr {
|
|
121
125
|
margin-right: auto;
|
122
126
|
padding: 20px;
|
123
127
|
background-color: #fff;
|
128
|
+
box-shadow: 0 1px 8px rgba(200, 200, 200, 0.26);
|
129
|
+
border-radius: 3px;
|
124
130
|
}
|
125
131
|
|
126
132
|
.no-record {
|
@@ -134,6 +140,7 @@ hr {
|
|
134
140
|
height: 34px;
|
135
141
|
line-height: 34px;
|
136
142
|
}
|
143
|
+
.toolbar form { display: inline; }
|
137
144
|
.toolbar .pull-right { float: right; }
|
138
145
|
|
139
146
|
#notice {
|
@@ -145,9 +152,9 @@ hr {
|
|
145
152
|
}
|
146
153
|
|
147
154
|
pre {
|
148
|
-
background: #
|
149
|
-
padding:
|
150
|
-
border:
|
155
|
+
background: #f7f7f7;
|
156
|
+
padding: 25px;
|
157
|
+
border-radius: 3px;
|
151
158
|
font-size: 12px;
|
152
159
|
font-family: Menlo, Monaco, Consolas, monospace;
|
153
160
|
}
|
@@ -165,6 +172,11 @@ h1 { font-size: 16px; }
|
|
165
172
|
display: inline-block;
|
166
173
|
padding: 5px 10px;
|
167
174
|
border: 1px solid #eee;
|
175
|
+
color: #555;
|
176
|
+
text-decoration: none;
|
177
|
+
}
|
178
|
+
.pagination a:hover {
|
179
|
+
background: #f7f7f7;
|
168
180
|
}
|
169
181
|
.pagination em,
|
170
182
|
.pagination .current {
|
@@ -10,6 +10,11 @@ module ExceptionTrack
|
|
10
10
|
@logs = Log.order("id desc").page(params[:page]).per(15)
|
11
11
|
end
|
12
12
|
|
13
|
+
def export
|
14
|
+
@logs = Log.order("id desc").where("created_at >= ?", 3.months.ago)
|
15
|
+
send_data JSON.pretty_generate(@logs.as_json(only: [:title, :body, :created_at, :updated_at])), filename: "#{Date.current}.json", disposition: "attachment"
|
16
|
+
end
|
17
|
+
|
13
18
|
# GET /exception_logs/1
|
14
19
|
def show; end
|
15
20
|
|
@@ -9,6 +9,9 @@
|
|
9
9
|
<%= @logs.total_count %> exceptions
|
10
10
|
|
11
11
|
<div class="pull-right">
|
12
|
+
<%= form_tag(export_logs_path, method: 'post') do %>
|
13
|
+
<button type="submit" class="btn">Export last 3 months</button>
|
14
|
+
<% end %>
|
12
15
|
<%= form_tag(all_logs_path, method: 'delete') do %>
|
13
16
|
<button type="submit" class="btn btn-danger" onclick="return confirmDestroyAll()">Delete All</button>
|
14
17
|
<% end %>
|
data/config/routes.rb
CHANGED
@@ -38,11 +38,14 @@ module ExceptionNotifier
|
|
38
38
|
def headers_for_env(env)
|
39
39
|
return "" if env.blank?
|
40
40
|
|
41
|
-
parameters = env
|
41
|
+
parameters = filter_parameters(env)
|
42
42
|
|
43
43
|
headers = []
|
44
44
|
headers << "Method: #{env['REQUEST_METHOD']}"
|
45
45
|
headers << "URL: #{env['REQUEST_URI']}"
|
46
|
+
if env['REQUEST_METHOD'].downcase != "get"
|
47
|
+
headers << "Parameters:\n#{pretty_hash(parameters.except(:controller, :action), 13)}"
|
48
|
+
end
|
46
49
|
headers << "Controller: #{parameters['controller']}##{parameters['action']}"
|
47
50
|
headers << "RequestId: #{env['action_dispatch.request_id']}"
|
48
51
|
headers << "User-Agent: #{env['HTTP_USER_AGENT']}"
|
@@ -53,5 +56,19 @@ module ExceptionNotifier
|
|
53
56
|
|
54
57
|
headers.join("\n")
|
55
58
|
end
|
59
|
+
|
60
|
+
def filter_parameters(env)
|
61
|
+
parameters = env["action_dispatch.request.parameters"] || {}
|
62
|
+
parameter_filter = ActionDispatch::Http::ParameterFilter.new(env["action_dispatch.parameter_filter"] || [])
|
63
|
+
return parameter_filter.filter(parameters)
|
64
|
+
rescue => e
|
65
|
+
Rails.logger.error "filter_parameters error: #{e.inspect}"
|
66
|
+
return parameters
|
67
|
+
end
|
68
|
+
|
69
|
+
def pretty_hash(params, indent = 0)
|
70
|
+
json = JSON.pretty_generate(params)
|
71
|
+
json.indent(indent)
|
72
|
+
end
|
56
73
|
end
|
57
74
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exception-track
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Lee
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: exception_notification
|