rscratch 0.1.4 → 0.1.5
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.
- checksums.yaml +13 -5
- data/README.md +10 -2
- data/app/assets/javascripts/rscratch/templates/exception_overview.jst.ejs +54 -46
- data/app/models/rscratch/exception.rb +20 -23
- data/app/models/rscratch/exception_log.rb +2 -2
- data/app/views/rscratch/exceptions/index.html.haml +1 -3
- data/lib/rscratch.rb +5 -0
- data/lib/rscratch/version.rb +1 -1
- metadata +14 -14
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MTExZjJkNjg0Y2ZjNzk3MzQ0YzJjMGQzMWRlYTgwYTAyMDY1ODFhMg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZmEzOWVjMjU4N2M3NDFhMWRmMTgwODJhOWFhYTdkN2M3NDgzNmIwNw==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YTczZThmZDU0Mjc4YzkyZjZmNThjNzU3MmYwMDY1ZmExNzJiZmRjYTg2NzU4
|
10
|
+
NzYxZjUyNjcxMTAwZjNlZTUyYTQwMzFlZjczNTM5MmI0MDRjYTg5YzEwZDk0
|
11
|
+
MTZiNGM1ZGZiODc3MDcwZjY3MGU0ODNkNzk0MTU3NDBlN2ZjMDY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZmY0YzllNmZhODAzYjQ0ZGNlMjA0MzY3MTE4MjA4YmFiMWM3M2Q4MDM1ODc5
|
14
|
+
ZmRhMzhiNjE1ZWQ3MjIwMTkwZGNhNmRhZDI3OWYwMzJkODYyNzUwNzNlYmZh
|
15
|
+
M2VmM2NhNjgxYmE5YWI3MmM0YzI2YWY4N2M5ZTE0ZTY5MWUwZGM=
|
data/README.md
CHANGED
@@ -14,6 +14,14 @@ RScratch is a Ruby on Rails gem that helps you to manage bugs in your applicatio
|
|
14
14
|
* UI is developed on top of Material Design.
|
15
15
|
* Exception log comes with full backtrace, parameters, client details and request preconditions.
|
16
16
|
|
17
|
+
### Screenshots
|
18
|
+
|
19
|
+
#### Dashboard
|
20
|
+

|
21
|
+
|
22
|
+
#### Exception Details
|
23
|
+

|
24
|
+
|
17
25
|
## Installation
|
18
26
|
|
19
27
|
Add this line to your application's Gemfile:
|
@@ -38,7 +46,7 @@ You should restart your application after installing RScratch gem.
|
|
38
46
|
## Usage
|
39
47
|
Add this following line in rescue block of your your code. An example is given below
|
40
48
|
```ruby
|
41
|
-
Rscratch
|
49
|
+
Rscratch.log_exception e,request
|
42
50
|
```
|
43
51
|
|
44
52
|
An example is given below
|
@@ -53,7 +61,7 @@ An example is given below
|
|
53
61
|
end
|
54
62
|
rescue Exception => e
|
55
63
|
# Log exception in RScratch
|
56
|
-
Rscratch
|
64
|
+
Rscratch.log_exception e,request
|
57
65
|
|
58
66
|
respond_to do |format|
|
59
67
|
format.json { render json: @post.errors, status: :unprocessable_entity }
|
@@ -13,53 +13,61 @@
|
|
13
13
|
return entityMap[s];
|
14
14
|
});
|
15
15
|
}
|
16
|
+
var seen_at = new Date(response.log.created_at);
|
17
|
+
var seen_at = seen_at.format("dd-mm-yyyy hh:MM TT","GMT");
|
18
|
+
|
16
19
|
var created_at = new Date(response.created_at);
|
17
|
-
var created_at = created_at.format("dd-mm-yyyy hh:MM TT","GMT");
|
20
|
+
var created_at = created_at.format("dd-mm-yyyy hh:MM TT","GMT");
|
18
21
|
|
19
|
-
var updated_at = new Date(response.
|
22
|
+
var updated_at = new Date(response.updated_at);
|
20
23
|
var updated_at = updated_at.format("dd-mm-yyyy hh:MM TT","GMT");
|
21
24
|
%>
|
22
|
-
<
|
23
|
-
<
|
24
|
-
|
25
|
-
</
|
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
|
-
|
54
|
-
<
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
<
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
<
|
63
|
-
|
64
|
-
|
65
|
-
|
25
|
+
<table>
|
26
|
+
<tbody>
|
27
|
+
<tr>
|
28
|
+
<td class="p5">Occured at</td>
|
29
|
+
<td class="p5"><%= seen_at %></td>
|
30
|
+
</tr>
|
31
|
+
<tr>
|
32
|
+
<td class="p5">First occured at</td>
|
33
|
+
<td class="p5"><%= created_at %></td>
|
34
|
+
</tr>
|
35
|
+
|
36
|
+
<tr>
|
37
|
+
<td class="p5">Last occured at</td>
|
38
|
+
<td class="p5"><%= updated_at %></td>
|
39
|
+
</tr>
|
40
|
+
<tr>
|
41
|
+
<td class="p5">Description</td>
|
42
|
+
<td class="p5"><%= escapeHtml(response.log.description) %></td>
|
43
|
+
</tr>
|
44
|
+
<tr>
|
45
|
+
<td class="p5">Environment</td>
|
46
|
+
<td class="p5"><%= response.app_environment %></td>
|
47
|
+
</tr>
|
48
|
+
<tr>
|
49
|
+
<td class="p5">Request URL</td>
|
50
|
+
<td class="p5"><%= response.log.request_url %></td>
|
51
|
+
</tr>
|
52
|
+
<tr>
|
53
|
+
<td class="p5">Request Method</td>
|
54
|
+
<td class="p5"><%= response.log.request_method %></td>
|
55
|
+
</tr>
|
56
|
+
<tr>
|
57
|
+
<td class="p5">Controller</td>
|
58
|
+
<td class="p5"><%= response.controller %></td>
|
59
|
+
</tr>
|
60
|
+
<tr>
|
61
|
+
<td class="p5">Action</td>
|
62
|
+
<td class="p5"><%= response.action %></td>
|
63
|
+
</tr>
|
64
|
+
<tr>
|
65
|
+
<td class="p5">Client IP</td>
|
66
|
+
<td class="p5"><%= response.log.client_ip %></td>
|
67
|
+
</tr>
|
68
|
+
<tr>
|
69
|
+
<td class="p5">User Agent</td>
|
70
|
+
<td class="p5"><%= response.log.user_agent %></td>
|
71
|
+
</tr>
|
72
|
+
</tbody>
|
73
|
+
</table>
|
@@ -19,12 +19,12 @@ module Rscratch
|
|
19
19
|
validates :status , presence: true, :inclusion => {:in => STATUS}
|
20
20
|
|
21
21
|
### => Model Scopes
|
22
|
-
scope :by_exception,
|
23
|
-
scope :by_message,
|
24
|
-
scope :by_controller,
|
25
|
-
scope :by_action,
|
26
|
-
scope :by_environment,
|
27
|
-
scope :by_status,
|
22
|
+
scope :by_exception, lambda {|exc|where(["exception=?", exc])}
|
23
|
+
scope :by_message, lambda {|msg|where(["message=?", msg])}
|
24
|
+
scope :by_controller, lambda {|con|where(["controller=?", con])}
|
25
|
+
scope :by_action, lambda {|act|where(["action=?", act])}
|
26
|
+
scope :by_environment, lambda {|env|where(["app_environment=?", env])}
|
27
|
+
scope :by_status, lambda {|status|where(["status=?", status])}
|
28
28
|
|
29
29
|
### => Model Callbacks
|
30
30
|
before_validation :set_default_attributes
|
@@ -39,31 +39,24 @@ module Rscratch
|
|
39
39
|
# Log an exception
|
40
40
|
def self.log(_exception,_request)
|
41
41
|
_exc = self.find_or_create(_exception,_request.filtered_parameters["controller"].camelize,_request.filtered_parameters["action"],Rails.env.camelize)
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
_exc.exception_logs <<
|
46
|
-
else
|
47
|
-
@log = _exc.exception_logs.last
|
42
|
+
unless _exc.ignored?
|
43
|
+
_log = ExceptionLog.new
|
44
|
+
_log.set_attributes_for _exception,_request
|
45
|
+
_exc.exception_logs << _log
|
48
46
|
end
|
49
|
-
|
50
|
-
|
51
|
-
:log_url => "#{_request.base_url}#{Rscratch::Engine.routes.url_helpers.log_exceptions_path(@log)}"
|
52
|
-
}
|
53
|
-
return _hash
|
47
|
+
_exc_log = _exc.exception_logs.last
|
48
|
+
return { :exception_id => _exc.id, :log_serial => _exc_log.id, :log_url => "#{_request.base_url}#{Rscratch::Engine.routes.url_helpers.log_exceptions_path(_exc_log)}" }
|
54
49
|
end
|
55
50
|
|
56
51
|
# Log unique exceptions
|
57
52
|
def self.find_or_create exc,_controller,_action,_env
|
58
|
-
_excp = Exception.by_exception(exc.class).by_message(exc.message).by_controller(_controller).by_action(_action).by_environment(_env)
|
59
|
-
|
60
|
-
return _excp.first
|
61
|
-
else
|
53
|
+
_excp = Exception.by_exception(exc.class).by_message(exc.message).by_controller(_controller).by_action(_action).by_environment(_env).first
|
54
|
+
unless _excp.present?
|
62
55
|
_excp = Exception.new
|
63
56
|
_excp.set_attributes_for exc, _controller, _action, _env
|
64
|
-
_excp.save!
|
65
|
-
_excp
|
57
|
+
_excp.save!
|
66
58
|
end
|
59
|
+
_excp
|
67
60
|
end
|
68
61
|
|
69
62
|
# Sets Exception instance attributes.
|
@@ -89,6 +82,10 @@ module Rscratch
|
|
89
82
|
def ignored?
|
90
83
|
self.is_ignored == true
|
91
84
|
end
|
85
|
+
|
86
|
+
def not_ignored?
|
87
|
+
!ignored?
|
88
|
+
end
|
92
89
|
|
93
90
|
def dont_ignore!
|
94
91
|
update_attribute(:is_ignored, false)
|
@@ -39,14 +39,14 @@ module Rscratch
|
|
39
39
|
|
40
40
|
# Sets Log instance attributes.
|
41
41
|
def set_attributes_for exc, request
|
42
|
-
self.description = exc.inspect,
|
43
42
|
self.backtrace = exc.backtrace.join("\n"),
|
44
43
|
self.request_url = request.original_url,
|
45
44
|
self.request_method = request.request_method,
|
46
45
|
self.parameters = request.filtered_parameters,
|
47
46
|
self.user_agent = request.user_agent,
|
48
47
|
self.client_ip = request.remote_ip,
|
49
|
-
self.status = "new"
|
48
|
+
self.status = "new",
|
49
|
+
self.description = exc.inspect
|
50
50
|
end
|
51
51
|
|
52
52
|
def log_count exception_id
|
@@ -11,14 +11,12 @@
|
|
11
11
|
%li.tab.col.s6
|
12
12
|
%a.white-text.waves-effect.waves-light{:href => "#resolved-ex"} Resolved
|
13
13
|
#new-ex.p0
|
14
|
-
=# smart_listing_controls_for(:exceptions, {class: "form-inline text-right"}) do
|
15
|
-
=# text_field_tag :filter, '', class: "search form-control", placeholder: "Search...", autocomplete: :off
|
16
14
|
= smart_listing_render :exceptions
|
17
15
|
#resolved-ex.p0
|
18
16
|
= smart_listing_render :resolved_exceptions
|
19
17
|
|
20
18
|
.col.s8.p0.right
|
21
|
-
.card#log-page-header.exception-info.margin-0
|
19
|
+
.card#log-page-header.exception-info.margin-0
|
22
20
|
.card-content.p0.blue.border-radius-0
|
23
21
|
.row.margin-0
|
24
22
|
.col.l8.s12
|
data/lib/rscratch.rb
CHANGED
data/lib/rscratch/version.rb
CHANGED
metadata
CHANGED
@@ -1,83 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rscratch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Avishek Jana
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: smart_listing
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ! '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ! '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: haml
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ! '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ! '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: ejs
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ! '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ! '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: jbuilder
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ! '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: haml-rails
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ! '>='
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ! '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
description: RScratch - Exception and log processing solution for Ruby on Rails application
|
@@ -181,12 +181,12 @@ require_paths:
|
|
181
181
|
- lib
|
182
182
|
required_ruby_version: !ruby/object:Gem::Requirement
|
183
183
|
requirements:
|
184
|
-
- -
|
184
|
+
- - ! '>='
|
185
185
|
- !ruby/object:Gem::Version
|
186
186
|
version: '0'
|
187
187
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
188
188
|
requirements:
|
189
|
-
- -
|
189
|
+
- - ! '>='
|
190
190
|
- !ruby/object:Gem::Version
|
191
191
|
version: '0'
|
192
192
|
requirements: []
|