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 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