rails_exception_logger 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +135 -0
  4. data/Rakefile +40 -0
  5. data/app/assets/javascripts/rails_exception_logger/application.js +15 -0
  6. data/app/assets/javascripts/rails_exception_logger/logged_exceptions.js +2 -0
  7. data/app/assets/javascripts/rails_exception_logger/rails_exception_logger.js +69 -0
  8. data/app/assets/stylesheets/rails_exception_logger/application.css +13 -0
  9. data/app/assets/stylesheets/rails_exception_logger/rails_exception_logger.css +320 -0
  10. data/app/assets/stylesheets/rails_exception_logger/rails_logged_exceptions.css +4 -0
  11. data/app/controllers/rails_exception_logger/application_controller.rb +4 -0
  12. data/app/controllers/rails_exception_logger/logged_exceptions_controller.rb +105 -0
  13. data/app/helpers/exception_logger/application_helper.rb +4 -0
  14. data/app/helpers/exception_logger/logged_exceptions_helper.rb +42 -0
  15. data/app/models/rails_exception_logger/logged_exception.rb +83 -0
  16. data/app/views/layouts/rails_exception_logger/application.html.erb +20 -0
  17. data/app/views/rails_exception_logger/logged_exceptions/_exceptions.html.erb +32 -0
  18. data/app/views/rails_exception_logger/logged_exceptions/_feed.html.erb +3 -0
  19. data/app/views/rails_exception_logger/logged_exceptions/_show.html.erb +23 -0
  20. data/app/views/rails_exception_logger/logged_exceptions/destroy.js.erb +2 -0
  21. data/app/views/rails_exception_logger/logged_exceptions/destroy_all.js.erb +2 -0
  22. data/app/views/rails_exception_logger/logged_exceptions/feed.rss.builder +20 -0
  23. data/app/views/rails_exception_logger/logged_exceptions/index.html.erb +46 -0
  24. data/app/views/rails_exception_logger/logged_exceptions/index.js.erb +2 -0
  25. data/app/views/rails_exception_logger/logged_exceptions/query.js.erb +2 -0
  26. data/app/views/rails_exception_logger/logged_exceptions/show.html.erb +8 -0
  27. data/app/views/rails_exception_logger/logged_exceptions/show.js.erb +2 -0
  28. data/config/initializers/date_formats.rb +5 -0
  29. data/config/locales/en.yml +17 -0
  30. data/config/routes.rb +13 -0
  31. data/db/migrate/20120507081835_create_rails_exception_logger_logged_exceptions.rb +14 -0
  32. data/lib/rails_exception_logger/engine.rb +5 -0
  33. data/lib/rails_exception_logger/version.rb +3 -0
  34. data/lib/rails_exception_logger.rb +68 -0
  35. data/lib/tasks/rails_exception_logger_tasks.rake +4 -0
  36. data/test/dummy/README.rdoc +261 -0
  37. data/test/dummy/Rakefile +7 -0
  38. data/test/dummy/app/assets/javascripts/application.js +15 -0
  39. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  40. data/test/dummy/app/controllers/application_controller.rb +3 -0
  41. data/test/dummy/app/controllers/simulate_controller.rb +10 -0
  42. data/test/dummy/app/helpers/application_helper.rb +2 -0
  43. data/test/dummy/app/helpers/simulate_helper.rb +2 -0
  44. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  45. data/test/dummy/app/views/simulate/failure.html.erb +2 -0
  46. data/test/dummy/config/application.rb +50 -0
  47. data/test/dummy/config/boot.rb +10 -0
  48. data/test/dummy/config/database.yml +25 -0
  49. data/test/dummy/config/environment.rb +5 -0
  50. data/test/dummy/config/environments/development.rb +29 -0
  51. data/test/dummy/config/environments/production.rb +63 -0
  52. data/test/dummy/config/environments/test.rb +33 -0
  53. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  54. data/test/dummy/config/initializers/inflections.rb +15 -0
  55. data/test/dummy/config/initializers/mime_types.rb +5 -0
  56. data/test/dummy/config/initializers/secret_token.rb +7 -0
  57. data/test/dummy/config/initializers/session_store.rb +8 -0
  58. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  59. data/test/dummy/config/locales/en.yml +5 -0
  60. data/test/dummy/config/routes.rb +6 -0
  61. data/test/dummy/config.ru +4 -0
  62. data/test/dummy/db/migrate/20120507083836_create_exception_logger_logged_exceptions.exception_logger.rb +15 -0
  63. data/test/dummy/db/schema.rb +27 -0
  64. data/test/dummy/public/404.html +26 -0
  65. data/test/dummy/public/422.html +26 -0
  66. data/test/dummy/public/500.html +25 -0
  67. data/test/dummy/public/favicon.ico +0 -0
  68. data/test/dummy/script/rails +6 -0
  69. data/test/dummy/test/functional/simulate_controller_test.rb +9 -0
  70. data/test/dummy/test/unit/helpers/simulate_helper_test.rb +4 -0
  71. data/test/exception_logger_test.rb +7 -0
  72. data/test/fixtures/exception_logger/logged_exceptions.yml +11 -0
  73. data/test/functional/exception_logger/logged_exceptions_controller_test.rb +9 -0
  74. data/test/integration/navigation_test.rb +10 -0
  75. data/test/test_helper.rb +10 -0
  76. data/test/unit/exception_logger/logged_exception_test.rb +9 -0
  77. data/test/unit/helpers/exception_logger/logged_exceptions_helper_test.rb +6 -0
  78. metadata +204 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 72beb33e7b837d68b6046abe9ca1517476500bcf
4
+ data.tar.gz: de1571da013330399ff3d4f4326cab44e36488f7
5
+ SHA512:
6
+ metadata.gz: 19afcd6b7b350992d7ea670bf145d9f602dc0c4570a599138db8a9137d55d42619d7b0ff604e895701d9a89e5e7090e6a3e41d995d3e646ee7ca7807d94a8b2a
7
+ data.tar.gz: 00914750a6fb7ac582f76262bd9cfcec0d90b5b33cf1f8553629b3eb71044f0278ca370afe9c6e4aa2750acfd9c8c5a39f726245565bf9954e9319c3b8f84566
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2012 YOURNAME
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,135 @@
1
+ = Exception Logger for Rails 4
2
+
3
+ This gem is evolved from the outdated rails_exception_logger gem. I refined it with the mountable rails engine, making it convenient to
4
+ mount to any existing rails app.
5
+
6
+ == Install
7
+
8
+ Inside your Gemfile:
9
+
10
+ # Rails 4.1.x
11
+ gem "rails_exception_logger", :github => "pvijayror/rails_exception_logger"
12
+
13
+ # Rails 4.0.x
14
+ gem "rails_exception_logger", :github => "pvijayror/rails_rails_exception_logger", tag: 'v0.1.0'
15
+
16
+ and then run:
17
+
18
+ bundle install
19
+
20
+ === Gem Dependencies
21
+
22
+ Please check if all those requirements are satisfied on your environment.
23
+
24
+ * will_paginate >= 3.0.5 # (used for pagination)
25
+ * rails >= 4.0.0
26
+
27
+ === Inside your ApplicationController:
28
+
29
+ include RailsExceptionLogger::ExceptionLoggable # loades the module
30
+ rescue_from Exception, :with => :log_exception_handler # tells rails to forward the 'Exception' (you can change the type) to the handler of the module
31
+
32
+ === Inside your config/routes.rb
33
+
34
+ mount RailsRailsExceptionLogger::Engine => "/rails_exception_logger"
35
+
36
+ === Database Setup
37
+
38
+ Use
39
+
40
+ rake rails_exception_logger:install:migrations
41
+
42
+ This will create a database migration
43
+
44
+ TIMESTAMP_create_rails_exception_logger_logged_exceptions.rails_exception_logger.rb
45
+
46
+ inside db/migrations
47
+
48
+ Then
49
+
50
+ rake db:migrate
51
+
52
+ == Authentication
53
+
54
+ If you want, and believe me you want that, you can add the following lines to your environment to enable Authentication
55
+
56
+ Example uses the declarative_authorization gem
57
+
58
+ in config/environment/production.rb:
59
+
60
+ config.after_initialize do
61
+ RailsRailsExceptionLogger::LoggedExceptionsController.class_eval do
62
+ # include any custom auth modules you need
63
+ # (declarative authorization gem used)
64
+ filter_resource_access
65
+ # just add any code you want to be included in the controller ;)
66
+ # optional, sets the application name for the rss feeds
67
+ self.application_name = "Your Application Name"
68
+ end
69
+ end
70
+
71
+ and (if you use declarative_authorization) add this to your authorization_rules.rb file:
72
+
73
+ role :admin do
74
+ has_permission_on :logged_exceptions, :to => :manage
75
+ ...
76
+
77
+ == Testing & Development
78
+
79
+ Not implemented yet.
80
+
81
+ == Usage
82
+
83
+ To localize the interface:
84
+
85
+ en:
86
+ rails_exception_logger:
87
+ logged_exceptions:
88
+ index:
89
+ title: Logged Exceptions
90
+ filters: Filters
91
+ latest_exceptions: Latest Exceptions
92
+ exception: Exception
93
+ controller_action: Controller / Action
94
+ dates: Dates
95
+ today: Today
96
+ last_few_days: Last few days
97
+ last_7_days: Last 7 days
98
+ last_30_days: Last 30 days
99
+ show:
100
+ title: Logged Exception
101
+
102
+ To log extra data, in your ApplicationController:
103
+
104
+ self.exception_data = Proc.new { |controller| "Extra exception infomation here!" }
105
+
106
+ or
107
+
108
+ self.exception_data = :extra_exception_data
109
+
110
+ def extra_exception_data
111
+ "Extra exception infomation here!"
112
+ end
113
+
114
+ To add authentication, in config/application.rb or the specific environment file:
115
+
116
+ # set up authencation of rails_exception_logger
117
+ config.after_initialize do
118
+ RailsRailsExceptionLogger::LoggedExceptionsController.class_eval do
119
+ before_filter :authorize
120
+
121
+ protected
122
+
123
+ def authorize
124
+ redirect_to main_app.admin_login_path unless admin_loggined?
125
+ end
126
+
127
+ def admin_loggined?
128
+ session[:admin_user_id].present?
129
+ end
130
+ end
131
+ end
132
+
133
+ ==License
134
+
135
+ MIT License. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+ begin
8
+ require 'rdoc/task'
9
+ rescue LoadError
10
+ require 'rdoc/rdoc'
11
+ require 'rake/rdoctask'
12
+ RDoc::Task = Rake::RDocTask
13
+ end
14
+
15
+ RDoc::Task.new(:rdoc) do |rdoc|
16
+ rdoc.rdoc_dir = 'rdoc'
17
+ rdoc.title = 'RailsExceptionLogger'
18
+ rdoc.options << '--line-numbers'
19
+ rdoc.rdoc_files.include('README.rdoc')
20
+ rdoc.rdoc_files.include('lib/**/*.rb')
21
+ end
22
+
23
+ APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
24
+ load 'rails/tasks/engine.rake'
25
+
26
+
27
+
28
+ Bundler::GemHelper.install_tasks
29
+
30
+ require 'rake/testtask'
31
+
32
+ Rake::TestTask.new(:test) do |t|
33
+ t.libs << 'lib'
34
+ t.libs << 'test'
35
+ t.pattern = 'test/**/*_test.rb'
36
+ t.verbose = false
37
+ end
38
+
39
+
40
+ task :default => :test
@@ -0,0 +1,15 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // the compiled file.
9
+ //
10
+ // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11
+ // GO AFTER THE REQUIRES BELOW.
12
+ //
13
+ //= require jquery
14
+ //= require jquery_ujs
15
+ //= require_tree .
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1,69 @@
1
+ $(function () {
2
+ function CSRFProtection(xhr) {
3
+ var token = $('meta[name="csrf-token"]').attr('content');
4
+ if (token) xhr.setRequestHeader('X-CSRF-Token', token);
5
+ };
6
+
7
+ function ajax_headers() {
8
+ if ('ajaxPrefilter' in $) $.ajaxPrefilter(function(options, originalOptions, xhr){ CSRFProtection(xhr) });
9
+ else $(document).ajaxSend(function(e, xhr){ CSRFProtection(xhr) });
10
+ };
11
+
12
+ ajax_headers();
13
+
14
+ $(document).on('click', '.show_link', function(event) {
15
+ $.get($(this).attr("href"));
16
+ return false;
17
+ });
18
+
19
+ $(document).on('click', '.close_link', function(event) {
20
+ $("#showpage").hide();
21
+ return false;
22
+ });
23
+
24
+ $(document).on('click', '.delete_link', function(event) {
25
+ $.ajax({
26
+ url: $(this).attr("href"),
27
+ type: 'DELETE'
28
+ });
29
+ return false;
30
+ });
31
+
32
+ $(document).on('click', '.delete_visible_link', function(event) {
33
+ var arr=$('tr.exception').map(function() { var id = $(this).attr("id"); return parseInt(id.replace(/^\w+_/, '')); }).get();
34
+ $.ajax({
35
+ url: $(this).attr("href"),
36
+ type: 'POST',
37
+ data: $.param({ids: arr}),
38
+ dataType: 'script'
39
+ });
40
+ return false;
41
+ });
42
+
43
+ $(document).on('click', '.filter_link', function(event) {
44
+ $('.filter_link').removeClass('selected');
45
+ $(this).addClass('selected');
46
+ $.ajax({
47
+ url: $(this).attr("href"),
48
+ type: 'POST',
49
+ dataType: 'script'
50
+ });
51
+ return false;
52
+ });
53
+
54
+ $(document).on('click', '#query-form :submit', function(event) {
55
+ $.ajax({
56
+ url: $("#query-form").attr("action"),
57
+ type: 'POST',
58
+ data: $("#query-form").serialize(),
59
+ dataType: 'script'
60
+ });
61
+ return false;
62
+ });
63
+
64
+ $(document).on('click', ".pagination a", function() {
65
+ $.getScript(this.href);
66
+ return false;
67
+ });
68
+ });
69
+
@@ -0,0 +1,13 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the top of the
9
+ * compiled file, but it's generally better to create a new file per style scope.
10
+ *
11
+ *= require_self
12
+ *= require_tree .
13
+ */
@@ -0,0 +1,320 @@
1
+ body
2
+ {
3
+ margin:0;
4
+ padding:0;
5
+ background:#e8e8e8;
6
+ font-family:'Lucida Grande', Arial, Helvetica, sans-serif;
7
+ font-size:1.0em;
8
+ color:white;
9
+ }
10
+
11
+ #container
12
+ {
13
+ margin:0 auto;
14
+ min-width:800px;
15
+ }
16
+
17
+ #left
18
+ {
19
+ margin-right:235px;
20
+
21
+ }
22
+
23
+ #left .page
24
+ {
25
+ font-size:0.9em;
26
+ background:#e8e8e8;
27
+ border:2px solid #999;
28
+ border-width:0 2px 2px 0;
29
+ padding:25px;
30
+ color:black;
31
+ }
32
+
33
+ #right
34
+ {
35
+ margin-top:1em;
36
+ float:right;
37
+ xwidth:22%;
38
+ font-size:0.9em;
39
+ width:200px;
40
+ margin-right:1.25em;
41
+ }
42
+
43
+ #right hr
44
+ {
45
+ border:0;
46
+ border-top:1px solid #222;
47
+ }
48
+
49
+ #search
50
+ {
51
+ margin-top:2em;
52
+ background:#e8e8e8;
53
+ padding:10px 5px;
54
+ border:1px solid #222;
55
+ border-width:1px 0;
56
+ }
57
+
58
+
59
+ ul.filters
60
+ {
61
+ list-style-type:none;
62
+ padding:0;
63
+ margin:0;
64
+ font-size:0.9em;
65
+ }
66
+ ul.filters li { margin-bottom:0.2em;}
67
+
68
+
69
+ ul.filters a,
70
+ ul.filters a:visited {
71
+ display:block;
72
+ padding:1px 7px;
73
+ color:#000;
74
+ text-decoration:none;
75
+ }
76
+
77
+ ul.filters a:hover
78
+ {
79
+ background:#666;
80
+ color:white;
81
+ }
82
+
83
+ ul.filters a.selected,
84
+ ul.filters a.selected:visited,
85
+ ul.filters a:active {
86
+ color:gold;
87
+ background-color:#333;
88
+ text-decoration:none;
89
+ font-weight:bold;
90
+ }
91
+
92
+
93
+ onclick a:hover
94
+ {
95
+ color:#fff;
96
+ text-decoration:none;
97
+ }
98
+
99
+ #exceptions table
100
+ {
101
+ width:99%;
102
+ border-collapse:collapse;
103
+ }
104
+
105
+ td
106
+ {
107
+ padding:5px 10px;
108
+ xborder:1px solid #ddd;
109
+ }
110
+
111
+ #backtrace
112
+ {
113
+ overflow:auto;
114
+ font-family:"Bitstream Vera Sans Mono", "Monaco", "Courier", monospace;;
115
+ font-size:0.85em;
116
+ margin-top:0.25em;
117
+ }
118
+
119
+ h2
120
+ {
121
+ background-color:#ddd;
122
+ font-size:0.8em;
123
+ padding:3px 10px;
124
+ }
125
+
126
+ form {margin:0;}
127
+
128
+ h3 {
129
+ font-size:0.8em;
130
+ color:#ddd;
131
+ background:#222;
132
+ padding:3px 7px;
133
+ }
134
+
135
+ div.date
136
+ {
137
+ color:#666;
138
+ font-size:0.8em;
139
+ }
140
+
141
+ h1
142
+ {
143
+ margin-top:0.25em;
144
+ font-size:1.25em;
145
+ padding-bottom:5px;
146
+ border-bottom:2px solid #ddd;
147
+ }
148
+
149
+ h1 span
150
+ {
151
+ color:#aaa;
152
+ font-weight:normal;
153
+ }
154
+
155
+ a
156
+ {
157
+ color:#369;
158
+ text-decoration:none;
159
+ }
160
+ a:hover
161
+ {
162
+ color:blue;
163
+ text-decoration:underline;
164
+ }
165
+
166
+ th
167
+ {
168
+ text-align:left;
169
+ xbackground:#333;
170
+ xcolor:gold;
171
+ font-size:0.75em;
172
+ padding:2px 10px;
173
+ }
174
+
175
+ tr { xcursor:pointer; }
176
+
177
+ tr.eor td
178
+ {
179
+ background:#e7e7e7;
180
+
181
+ }
182
+
183
+ /*
184
+ tr:hover td,
185
+ tr.eor:hover td
186
+ {
187
+ background:#333;
188
+ color:white;
189
+ }
190
+ tr:hover td a,
191
+ tr.eor:hover td a { color:gold; }
192
+ */
193
+
194
+ .message
195
+ {
196
+ font-size:0.8em;
197
+ }
198
+
199
+ a.util
200
+ {
201
+ color:#c00;
202
+ font-size:0.7em;
203
+ }
204
+
205
+ .pipe
206
+ {
207
+ font-size:0.75em;
208
+ color:#999;
209
+ }
210
+
211
+ .tools { float:right; }
212
+
213
+ .time
214
+ {
215
+ color:#666;
216
+ font-size:0.75em;
217
+ xvertical-align:top;
218
+ }
219
+
220
+
221
+ .expclass
222
+ {
223
+ xcolor:#999;
224
+ }
225
+ .expclass a
226
+ {
227
+ font-size:0.9em;
228
+ }
229
+
230
+ tr.deleted td {
231
+ color:#aaa;
232
+ text-decoration: line-through;
233
+ }
234
+ tr.deleted td a { color:#aaa; }
235
+
236
+ .pages { float:right; margin-right:1em; }
237
+ .pages a { text-decoration:underline; }
238
+ .pages-bottom { border-top:2px solid #ddd; text-align:right; float:none;
239
+ padding-top:0.4em;
240
+ margin-top:0.4em;
241
+ padding-right:1em;
242
+ margin-right:0;
243
+ }
244
+
245
+ /* right */
246
+
247
+ #right h4
248
+ {
249
+ font-size:0.75em;
250
+ xbackground:#171717;
251
+ xbackground:#333;
252
+ color:#999;
253
+ padding:3px 5px;
254
+ margin-bottom:0.5em;
255
+ font-weight:normal;
256
+ }
257
+
258
+ /* tabs */
259
+
260
+ ul.tabs
261
+ {
262
+ list-style-type:none;
263
+ padding:0;
264
+ margin:1em 0;
265
+ float:left;
266
+ }
267
+ ul.tabs li { float:left; display:inline; }
268
+ ul.tabs li a
269
+ {
270
+ font-size:0.8em;
271
+ padding:3px 7px;
272
+ margin-right:1em;
273
+ text-decoration:none;
274
+ color:black;
275
+ }
276
+
277
+ ul.tabs li a:hover
278
+ {
279
+ background:#666;
280
+ color:white;
281
+ }
282
+ ul.tabs li.selected a
283
+ {
284
+ background:black;
285
+ color:white;
286
+ }
287
+
288
+ #activity {
289
+ position:fixed;
290
+ top:0; right:18px;
291
+ width:200px;
292
+ padding:5px 0;
293
+ text-align:center;
294
+ background-color:#cf1313;
295
+ color:#fff;
296
+ opacity:.8;
297
+ font-size: 11px;
298
+ }
299
+
300
+ #feed {
301
+ margin-top: 15px;
302
+ }
303
+
304
+ /* html5 changes */
305
+
306
+ #exceptions table {
307
+ border-collapse: collapse;
308
+ }
309
+
310
+ #exceptions table thead {
311
+ display: none;
312
+ }
313
+
314
+ #exceptions table tbody tr.exception td.time {
315
+ white-space: nowrap
316
+ }
317
+
318
+ #container #left #showpage {
319
+ margin-bottom:1em;
320
+ }
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -0,0 +1,4 @@
1
+ module RailsExceptionLogger
2
+ class ApplicationController < ActionController::Base
3
+ end
4
+ end