nightwatch 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/nightwatch/configuration.rb +3 -0
- data/lib/nightwatch/ext/rake.rb +29 -0
- data/lib/nightwatch/ext/thread.rb +17 -0
- data/lib/nightwatch/filter.rb +7 -0
- data/lib/nightwatch/mongo.rb +2 -0
- data/lib/nightwatch/monitor.rb +14 -22
- data/lib/nightwatch/version.rb +1 -1
- data/lib/nightwatch/web/public/css/app.css +3 -3
- data/lib/nightwatch/web/server.rb +1 -0
- data/lib/nightwatch/web/views/index.erb +17 -1
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e111fc1eab036c74d4a5a7bc2c8613f961facdd
|
4
|
+
data.tar.gz: aa5224897152449ca14568ed53dada6ff8a7cf2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 024802867d65a72431dffccfd018fde970efdb1df94748519ea12562cf36ed174ed2b68900c3ee566be9a431532b9157f6bffc704199d601634f60141d40f54b
|
7
|
+
data.tar.gz: b90e7801a10e9f1355403ade812b74d93f312279492d48f8bff75cd243e88f7da639b6ba82e428d39fb27bad183f02f014bc40fe3b16239c2912bad0f5bcae1e
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'singleton'
|
2
2
|
require 'nightwatch/mongo'
|
3
|
+
require 'nightwatch/filter'
|
3
4
|
|
4
5
|
module Nightwatch
|
5
6
|
def self.configure(&block)
|
@@ -11,8 +12,10 @@ module Nightwatch
|
|
11
12
|
|
12
13
|
def initialize
|
13
14
|
@logger = Mongo.new
|
15
|
+
@filters = [AcceptFilter.new]
|
14
16
|
end
|
15
17
|
|
16
18
|
attr_accessor :logger
|
19
|
+
attr_accessor :filters
|
17
20
|
end
|
18
21
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Rake
|
2
|
+
class Application
|
3
|
+
top_level_method = instance_method(:top_level)
|
4
|
+
|
5
|
+
define_method :top_level do |*args, &block|
|
6
|
+
begin
|
7
|
+
top_level_method.bind(self).call(*args, &block)
|
8
|
+
ensure
|
9
|
+
if $!
|
10
|
+
Nightwatch::ExceptionManager.instance.add_exception($!)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
module Nightwatch
|
18
|
+
class RakeFilter
|
19
|
+
def apply(exception)
|
20
|
+
if exception.is_a? SystemExit
|
21
|
+
nil
|
22
|
+
else
|
23
|
+
exception
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
Nightwatch::Configuration.instance.filters << Nightwatch::RakeFilter.new
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class Thread
|
2
|
+
initialize_method = instance_method(:initialize)
|
3
|
+
|
4
|
+
define_method :initialize do |*args, &orig_block|
|
5
|
+
block = proc do |*block_args|
|
6
|
+
begin
|
7
|
+
orig_block.call(*block_args)
|
8
|
+
ensure
|
9
|
+
if $!
|
10
|
+
Nightwatch::ExceptionManager.instance.add_exception($!)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
initialize_method.bind(self).call(*args, &block)
|
16
|
+
end
|
17
|
+
end
|
data/lib/nightwatch/mongo.rb
CHANGED
@@ -2,6 +2,8 @@ require 'mongo'
|
|
2
2
|
|
3
3
|
module Nightwatch
|
4
4
|
class Mongo
|
5
|
+
# TODO: Allow users to specify client (e.g. Nightwatch::Mongo.new(client: mongo_client))
|
6
|
+
# TODO: Raise error if one of :host/:port or :client is not specified
|
5
7
|
def initialize(opts = {})
|
6
8
|
@host = opts[:host] || '127.0.0.1'
|
7
9
|
@port = opts[:port] || 27017
|
data/lib/nightwatch/monitor.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'socket'
|
2
2
|
require 'singleton'
|
3
|
+
require 'rbconfig'
|
3
4
|
require 'nightwatch/configuration'
|
5
|
+
require 'nightwatch/ext/thread'
|
4
6
|
|
5
7
|
module Nightwatch
|
6
8
|
class ExceptionManager
|
@@ -19,7 +21,14 @@ module Nightwatch
|
|
19
21
|
end
|
20
22
|
|
21
23
|
def add_exception(exception)
|
22
|
-
|
24
|
+
Configuration.instance.filters.each do |filter|
|
25
|
+
exception = filter.apply(exception)
|
26
|
+
break if !exception
|
27
|
+
end
|
28
|
+
|
29
|
+
if exception
|
30
|
+
@exceptions[exception.object_id] = [exception, stack(exception), Time.now.to_i]
|
31
|
+
end
|
23
32
|
end
|
24
33
|
|
25
34
|
def commit!
|
@@ -31,13 +40,14 @@ module Nightwatch
|
|
31
40
|
klass = exception.class.name
|
32
41
|
|
33
42
|
record = {
|
34
|
-
|
43
|
+
class: klass,
|
44
|
+
message: exception.to_s,
|
35
45
|
script: @@script,
|
36
46
|
argv: @@argv,
|
47
|
+
pid: $$,
|
37
48
|
env: env,
|
49
|
+
config: RbConfig::CONFIG,
|
38
50
|
host: host,
|
39
|
-
class: klass,
|
40
|
-
message: exception.to_s,
|
41
51
|
stack: stack,
|
42
52
|
timestamp: ticks
|
43
53
|
}
|
@@ -74,24 +84,6 @@ module Nightwatch
|
|
74
84
|
end
|
75
85
|
end
|
76
86
|
|
77
|
-
class Thread
|
78
|
-
alias_method :orig_initialize, :initialize
|
79
|
-
|
80
|
-
def initialize(*args, &orig_block)
|
81
|
-
block = proc do
|
82
|
-
begin
|
83
|
-
orig_block.call
|
84
|
-
ensure
|
85
|
-
if $!
|
86
|
-
Nightwatch::ExceptionManager.instance.add_exception($!)
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
orig_initialize(*args, &block)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
87
|
at_exit do
|
96
88
|
if $!
|
97
89
|
Nightwatch::ExceptionManager.instance.add_exception($!)
|
data/lib/nightwatch/version.rb
CHANGED
@@ -81,7 +81,7 @@ html, body {
|
|
81
81
|
.table th {
|
82
82
|
font-weight: 500;
|
83
83
|
}
|
84
|
-
.environment.table td.value {
|
84
|
+
.environment.table td.value, .configuration.table td.value {
|
85
85
|
word-break: break-all;
|
86
86
|
}
|
87
87
|
.table, .table tr th {
|
@@ -112,8 +112,8 @@ html, body {
|
|
112
112
|
.tab-pane#summary .name {
|
113
113
|
font-weight: 500;
|
114
114
|
}
|
115
|
-
.
|
116
|
-
color: #
|
115
|
+
.empty {
|
116
|
+
color: #bbb;
|
117
117
|
}
|
118
118
|
.location {
|
119
119
|
font-family: Consolas, Monaco, monospace;
|
@@ -57,6 +57,7 @@
|
|
57
57
|
<li class="active"><a href="#summary" data-toggle="tab">Summary</a></li>
|
58
58
|
<li><a href="#stack" data-toggle="tab">Stack</a></li>
|
59
59
|
<li><a href="#environment" data-toggle="tab">Environment</a></li>
|
60
|
+
<li><a href="#configuration" data-toggle="tab">Configuration</a></li>
|
60
61
|
</ul>
|
61
62
|
<div class="tab-content">
|
62
63
|
<div class="tab-pane active" id="summary">
|
@@ -78,7 +79,7 @@
|
|
78
79
|
</div>
|
79
80
|
<div class="row">
|
80
81
|
<div class="col-md-2"><p class="name">Arguments</p></div>
|
81
|
-
<div class="col-md-10" ng-if="activeException.argv.length == 0"><p class="
|
82
|
+
<div class="col-md-10" ng-if="activeException.argv.length == 0"><p class="empty">(none)</p></div>
|
82
83
|
<div class="col-md-10" ng-if="activeException.argv.length > 0"><p>{{activeException.argv.join(' ')}}</p></div>
|
83
84
|
</div>
|
84
85
|
<div class="row">
|
@@ -120,6 +121,21 @@
|
|
120
121
|
</tr>
|
121
122
|
</table>
|
122
123
|
</div>
|
124
|
+
<div class="tab-pane" id="configuration">
|
125
|
+
<table class="table configuration">
|
126
|
+
<tr>
|
127
|
+
<th>Name</th>
|
128
|
+
<th>Value</th>
|
129
|
+
</tr>
|
130
|
+
<tr ng-repeat="(name, value) in activeException.config">
|
131
|
+
<td>{{name}}</td>
|
132
|
+
<td class="value">
|
133
|
+
<span ng-unless="value | isEmpty">{{value}}</span>
|
134
|
+
<span ng-if="value | isEmpty" class="empty">(empty)</span>
|
135
|
+
</td>
|
136
|
+
</tr>
|
137
|
+
</table>
|
138
|
+
</div>
|
123
139
|
</div>
|
124
140
|
</div>
|
125
141
|
</div>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nightwatch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Schmich
|
@@ -102,6 +102,9 @@ extensions: []
|
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
104
|
- lib/nightwatch/configuration.rb
|
105
|
+
- lib/nightwatch/ext/rake.rb
|
106
|
+
- lib/nightwatch/ext/thread.rb
|
107
|
+
- lib/nightwatch/filter.rb
|
105
108
|
- lib/nightwatch/mongo.rb
|
106
109
|
- lib/nightwatch/monitor.rb
|
107
110
|
- lib/nightwatch/version.rb
|