rails_monitor 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new('spec')
5
+
6
+ task :default => :spec
@@ -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
- render :text => "OK: #{result}"
41
+ render_text_plain "OK: #{result}"
37
42
  else
38
- render :text => "ERROR: #{result}"
43
+ render_text_plain "ERROR: #{result}"
39
44
  end
40
45
  end
41
46
  end
42
47
 
43
- def numeric_status(name, warn_threshold = nil, error_threshold = nil)
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
- if error_threshold && result >= error_threshold
50
- render :text => "ERROR: #{result}"
51
- elsif warn_threshold && result >= warn_threshold
52
- render :text => "WARN: #{result}"
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
- render :text => "OK: #{result}"
62
+ render_text_plain "OK: #{result}"
55
63
  end
56
64
  end
57
65
  end
@@ -1,3 +1,3 @@
1
1
  module RailsMonitor
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -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
+
@@ -0,0 +1,8 @@
1
+ require 'bundler/setup'
2
+ require 'active_support/all'
3
+ require 'action_controller'
4
+ require 'action_controller/test_case'
5
+ require 'rails_monitor'
6
+
7
+ RSpec.configure do |config|
8
+ end
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.0
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