rails_monitor 0.1.0 → 0.1.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.
- data/Rakefile +6 -1
- data/examples/example_monitoring_controller.rb +47 -0
- data/lib/rails_monitor.rb +16 -8
- data/lib/rails_monitor/version.rb +1 -1
- data/rails_monitor.gemspec +2 -0
- data/spec/rails_monitor_spec.rb +60 -0
- data/spec/spec_helper.rb +8 -0
- metadata +45 -2
data/Rakefile
CHANGED
@@ -0,0 +1,47 @@
|
|
1
|
+
class ExampleMonitoringController < ActionController::Base
|
2
|
+
include RailsMonitor::Monitoring
|
3
|
+
|
4
|
+
status_tab :tab_one, [
|
5
|
+
:test_status_one,
|
6
|
+
:test_status_two
|
7
|
+
]
|
8
|
+
|
9
|
+
status_tab :tab_two, [
|
10
|
+
:test_status_three,
|
11
|
+
:test_status_four
|
12
|
+
]
|
13
|
+
|
14
|
+
status_tab :tab_three, [
|
15
|
+
:test_warn_numeric,
|
16
|
+
:test_error_numeric,
|
17
|
+
:test_error_boolean
|
18
|
+
]
|
19
|
+
|
20
|
+
numeric_status :test_status_one do
|
21
|
+
10
|
22
|
+
end
|
23
|
+
|
24
|
+
numeric_status :test_status_two do
|
25
|
+
20
|
26
|
+
end
|
27
|
+
|
28
|
+
boolean_status :test_status_three do
|
29
|
+
true
|
30
|
+
end
|
31
|
+
|
32
|
+
boolean_status :test_status_four do
|
33
|
+
false
|
34
|
+
end
|
35
|
+
|
36
|
+
numeric_status :test_warn_numeric, 10, 20 do
|
37
|
+
15
|
38
|
+
end
|
39
|
+
|
40
|
+
numeric_status :test_error_numeric, 10, 20 do
|
41
|
+
25
|
42
|
+
end
|
43
|
+
|
44
|
+
boolean_status :test_error_boolean do
|
45
|
+
false
|
46
|
+
end
|
47
|
+
end
|
data/lib/rails_monitor.rb
CHANGED
@@ -21,6 +21,11 @@ module RailsMonitor
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
def render_text_plain(text)
|
25
|
+
headers['Content-type'] = 'text/plain'
|
26
|
+
render :text => text
|
27
|
+
end
|
28
|
+
|
24
29
|
module ClassMethods
|
25
30
|
def status_tab(anchor, statuses_to_show = [])
|
26
31
|
self.statuses[anchor] = statuses_to_show
|
@@ -33,25 +38,28 @@ module RailsMonitor
|
|
33
38
|
result = yield
|
34
39
|
|
35
40
|
if result
|
36
|
-
|
41
|
+
render_text_plain "OK: #{result}"
|
37
42
|
else
|
38
|
-
|
43
|
+
render_text_plain "ERROR: #{result}"
|
39
44
|
end
|
40
45
|
end
|
41
46
|
end
|
42
47
|
|
43
|
-
def numeric_status(name,
|
48
|
+
def numeric_status(name, default_warn_threshold = nil, default_error_threshold = nil)
|
44
49
|
raise ArgumentError('No block given') unless block_given?
|
45
50
|
|
46
51
|
define_method(name) do
|
47
52
|
result = yield.to_i
|
48
53
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
54
|
+
warn_threshold = default_warn_threshold || params[:warn_threshold]
|
55
|
+
error_threshold = default_error_threshold || params[:error_threshold]
|
56
|
+
|
57
|
+
if error_threshold && result >= error_threshold.to_i
|
58
|
+
render_text_plain "ERROR: #{result}"
|
59
|
+
elsif warn_threshold && result >= warn_threshold.to_i
|
60
|
+
render_text_plain "WARN: #{result}"
|
53
61
|
else
|
54
|
-
|
62
|
+
render_text_plain "OK: #{result}"
|
55
63
|
end
|
56
64
|
end
|
57
65
|
end
|
data/rails_monitor.gemspec
CHANGED
@@ -21,5 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_dependency 'actionpack', '>= 3.1.0'
|
22
22
|
spec.add_dependency 'jquery-rails'
|
23
23
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
24
|
+
spec.add_development_dependency 'rack'
|
24
25
|
spec.add_development_dependency 'rake'
|
26
|
+
spec.add_development_dependency 'rspec'
|
25
27
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require File.join(File.dirname(__FILE__), '..', 'examples', 'example_monitoring_controller')
|
3
|
+
|
4
|
+
describe RailsMonitor::Monitoring do
|
5
|
+
before(:each) do
|
6
|
+
@controller = ExampleMonitoringController.new
|
7
|
+
@request = ActionController::TestRequest.new
|
8
|
+
@response = ActionController::TestResponse.new
|
9
|
+
@controller.request = @request
|
10
|
+
@controller.response = @response
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should create an index method' do
|
14
|
+
@controller.should respond_to(:index)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should create a method for each status' do
|
18
|
+
@controller.should respond_to(:test_status_one)
|
19
|
+
@controller.should respond_to(:test_status_two)
|
20
|
+
@controller.should respond_to(:test_status_three)
|
21
|
+
@controller.should respond_to(:test_status_four)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should render a numeric endpoint' do
|
25
|
+
@controller.test_status_one
|
26
|
+
@response.body.should == 'OK: 10'
|
27
|
+
@response.headers['Content-type'].should == 'text/plain'
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should warn for a numeric endpoint' do
|
31
|
+
@controller.test_warn_numeric
|
32
|
+
@response.body.should == 'WARN: 15'
|
33
|
+
@response.headers['Content-type'].should == 'text/plain'
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should error for a numeric endpoint' do
|
37
|
+
@controller.test_error_numeric
|
38
|
+
@response.body.should == 'ERROR: 25'
|
39
|
+
@response.headers['Content-type'].should == 'text/plain'
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should error for a boolean' do
|
43
|
+
@controller.test_error_boolean
|
44
|
+
@response.body.should == 'ERROR: false'
|
45
|
+
@response.headers['Content-type'].should == 'text/plain'
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should allow a warn threshold to be specified in params' do
|
49
|
+
@request.params['warn_threshold'] = '5'
|
50
|
+
@controller.test_status_one
|
51
|
+
@response.body.should == 'WARN: 10'
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should allow an error threshold to be specified in params' do
|
55
|
+
@request.params['error_threshold'] = '5'
|
56
|
+
@controller.test_status_one
|
57
|
+
@response.body.should == 'ERROR: 10'
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_monitor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -59,6 +59,22 @@ dependencies:
|
|
59
59
|
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '1.3'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rack
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
62
78
|
- !ruby/object:Gem::Dependency
|
63
79
|
name: rake
|
64
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,6 +91,22 @@ dependencies:
|
|
75
91
|
- - ! '>='
|
76
92
|
- !ruby/object:Gem::Version
|
77
93
|
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rspec
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
78
110
|
description: Easily monitor your rails application
|
79
111
|
email:
|
80
112
|
- radsaq@gmail.com
|
@@ -88,9 +120,12 @@ files:
|
|
88
120
|
- README.md
|
89
121
|
- Rakefile
|
90
122
|
- app/views/rails_monitor/status.html.haml
|
123
|
+
- examples/example_monitoring_controller.rb
|
91
124
|
- lib/rails_monitor.rb
|
92
125
|
- lib/rails_monitor/version.rb
|
93
126
|
- rails_monitor.gemspec
|
127
|
+
- spec/rails_monitor_spec.rb
|
128
|
+
- spec/spec_helper.rb
|
94
129
|
homepage: ''
|
95
130
|
licenses:
|
96
131
|
- MIT
|
@@ -104,12 +139,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
104
139
|
- - ! '>='
|
105
140
|
- !ruby/object:Gem::Version
|
106
141
|
version: '0'
|
142
|
+
segments:
|
143
|
+
- 0
|
144
|
+
hash: 1523396089965265628
|
107
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
146
|
none: false
|
109
147
|
requirements:
|
110
148
|
- - ! '>='
|
111
149
|
- !ruby/object:Gem::Version
|
112
150
|
version: '0'
|
151
|
+
segments:
|
152
|
+
- 0
|
153
|
+
hash: 1523396089965265628
|
113
154
|
requirements: []
|
114
155
|
rubyforge_project:
|
115
156
|
rubygems_version: 1.8.25
|
@@ -117,4 +158,6 @@ signing_key:
|
|
117
158
|
specification_version: 3
|
118
159
|
summary: Easily monitor your rails application from a convenient web page, or define
|
119
160
|
endpoints for 3rd party software like nagios.
|
120
|
-
test_files:
|
161
|
+
test_files:
|
162
|
+
- spec/rails_monitor_spec.rb
|
163
|
+
- spec/spec_helper.rb
|