okcomputer 1.11.1 → 1.12.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e98c45fbc87628bf1d143ef54b7c3688db17445f
4
- data.tar.gz: 755db783e2105b593afa77653aee78d3a8febfc9
3
+ metadata.gz: 68f34f802639366baa476811ef5887698d421430
4
+ data.tar.gz: a561e25ff0338f38ab6f74f992b0fcde158f1a27
5
5
  SHA512:
6
- metadata.gz: 4f8b9332ca781d93205bdd03fc8de67a2274f8206b6df2ae6d56ce4f3e6e98a8f20235ec83f6c42e21bad4d192268a9aef3214ef11695a3ef83d89ea02def386
7
- data.tar.gz: 55409375cfeee2457b4f6d59e768adc0cf8073a8860bd80c2f7fdd20a9fc31aa91c53ccfa84075366bfb942637a6a77813074f63637d82f767929ddcd21a584c
6
+ metadata.gz: b90dc5648bade933b9cc58c45db4e71c434e6920b3c3a3cc9ac78c1238b3b8ad1c3d49ce380533faee081ab7a055dc19547a70176a8fe3e7e37bc95c2df65918
7
+ data.tar.gz: 57dea05e4612d62026a7aee1bc3ec6bdffc85666a67e298332bfbab015da014218480fc76b5b9ca7742fb47cf108e91fc842cf8a33eb738ff4097e19c0e12f2a
data/README.markdown CHANGED
@@ -15,6 +15,13 @@ OK Computer][blog].
15
15
 
16
16
  [blog]:http://pulse.sportngin.com/news_article/show/267646?referrer_id=543230
17
17
 
18
+ OkComputer currently supports the following Rails versions:
19
+
20
+ * 3.2
21
+ * 4.1
22
+ * 4.2
23
+ * 5.0
24
+
18
25
  #### Not using Rails?
19
26
 
20
27
  If you use [Grape] instead of Rails, check out [okcomputer-grape].
@@ -180,6 +187,28 @@ If you'd like to intentionally count OkComputer requests in your NewRelic analyt
180
187
  OkComputer.analytics_ignore = false
181
188
  ```
182
189
 
190
+ ## Development
191
+
192
+ ### Setup
193
+
194
+ ```plaintext
195
+ $ bundle install
196
+ ```
197
+
198
+ ### Running the test suite
199
+
200
+ OkComputer tests are written with [RSpec](http://rspec.info/).
201
+
202
+ To run the full test suite:
203
+
204
+ ```plaintext
205
+ $ rake spec
206
+ ```
207
+
208
+ You may also use the environment variable `RAILS_VERSION` with one
209
+ of the supported versions of Rails (found at the top of this file) to
210
+ bundle and run the tests with a specific version of Rails.
211
+
183
212
  ## Contributing
184
213
 
185
214
  1. Fork it
data/Rakefile CHANGED
@@ -9,13 +9,18 @@ Bundler::GemHelper.install_tasks
9
9
 
10
10
  task :default => :spec
11
11
 
12
- require "rspec/core/rake_task"
12
+ begin
13
+ require "rspec/core/rake_task"
13
14
 
14
- RSpec::Core::RakeTask.new(:spec)
15
+ RSpec::Core::RakeTask.new(:spec) do |t|
16
+ puts "Testing with Rails #{ENV["RAILS_VERSION"]}..." if ENV["RAILS_VERSION"]
17
+ end
15
18
 
16
- namespace :spec do
17
- RSpec::Core::RakeTask.new(:docs) do |t|
18
- t.rspec_opts = ["--format doc"]
19
+ namespace :spec do
20
+ RSpec::Core::RakeTask.new(:docs) do |t|
21
+ t.rspec_opts = ["--format doc"]
22
+ end
19
23
  end
24
+ rescue LoadError
20
25
  end
21
26
 
@@ -13,7 +13,7 @@ module OkComputer
13
13
 
14
14
  rescue_from OkComputer::Registry::CheckNotFound do |e|
15
15
  respond_to do |f|
16
- f.any(:text, :html) { render plain: e.message, status: :not_found }
16
+ f.any(:text, :html) { render plain: e.message, status: :not_found, content_type: 'text/plain' }
17
17
  f.json { render json: { error: e.message }, status: :not_found }
18
18
  end
19
19
  end
@@ -36,7 +36,7 @@ module OkComputer
36
36
 
37
37
  def respond(data, status)
38
38
  respond_to do |format|
39
- format.any(:text, :html) { render plain: data, status: status }
39
+ format.any(:text, :html) { render plain: data, status: status, content_type: 'text/plain' }
40
40
  format.json { render json: data, status: status }
41
41
  end
42
42
  end
@@ -0,0 +1,52 @@
1
+ module OkComputer
2
+ # Performs a health check by making a TCPSocket request to the host and port.
3
+ # A non-error response is considered passing.
4
+ class PingCheck < Check
5
+ ConnectionFailed = Class.new(StandardError)
6
+
7
+ attr_accessor :host, :port, :request_timeout
8
+
9
+ # Public: Initialize a new ping check.
10
+ #
11
+ # host - the hostname
12
+ # port - the port, as a string
13
+ # request_timeout - How long to wait to connect before timing out. Defaults to 5 seconds.
14
+ def initialize(host, port, request_timeout = 5)
15
+ raise ArgumentError if host.blank? || port.blank?
16
+ self.host = host
17
+ self.port = port
18
+ self.request_timeout = request_timeout.to_i
19
+ end
20
+
21
+ # Public: Return the status of the Ping check
22
+ def check
23
+ tcp_socket_request
24
+ mark_message "Ping check to #{host}:#{port} successful"
25
+ rescue => e
26
+ mark_message "Error: '#{e}'"
27
+ mark_failure
28
+ end
29
+
30
+ private
31
+
32
+ # Returns true if the request was successful.
33
+ # Otherwise raises a PingCheck::ConnectionFailed error.
34
+ def tcp_socket_request
35
+ Timeout.timeout(request_timeout) do
36
+ s = TCPSocket.new(host, port)
37
+ s.close
38
+ end
39
+ rescue Errno::ECONNREFUSED => e
40
+ addl_message = "#{host} is not accepting connections on port #{port}: "
41
+ raise ConnectionFailed, addl_message + e.message
42
+ rescue SocketError => e
43
+ addl_message = "connection to #{host} on port #{port} failed with '#{e.message}': "
44
+ raise ConnectionFailed, addl_message + e.message
45
+ rescue TimeoutError => e
46
+ addl_message = "#{host} did not respond on port #{port} within #{request_timeout} seconds: "
47
+ raise ConnectionFailed, addl_message + e.message
48
+ rescue => e
49
+ raise ConnectionFailed, e
50
+ end
51
+ end
52
+ end
@@ -10,7 +10,7 @@ module OkComputer
10
10
  end
11
11
 
12
12
  # Support 'render plain' for Rails 3
13
- def render(**options, &block)
13
+ def render(options = {}, &block)
14
14
  options[:text] = options.delete(:plain) if options.include?(:plain)
15
15
  super
16
16
  end
@@ -1,3 +1,3 @@
1
1
  module OkComputer
2
- VERSION = '1.11.1'
2
+ VERSION = '1.12.0'
3
3
  end
data/lib/okcomputer.rb CHANGED
@@ -20,6 +20,7 @@ require "ok_computer/built_in_checks/mongoid_check"
20
20
  require "ok_computer/built_in_checks/neo4j_check"
21
21
  require "ok_computer/built_in_checks/mongoid_replica_set_check"
22
22
  require "ok_computer/built_in_checks/optional_check"
23
+ require "ok_computer/built_in_checks/ping_check"
23
24
  require "ok_computer/built_in_checks/rabbitmq_check"
24
25
  require "ok_computer/built_in_checks/redis_check"
25
26
  require "ok_computer/built_in_checks/resque_backed_up_check"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: okcomputer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.1
4
+ version: 1.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Byrne
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-08-25 00:00:00.000000000 Z
13
+ date: 2016-10-04 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: sqlite3
@@ -84,6 +84,7 @@ files:
84
84
  - lib/ok_computer/built_in_checks/mongoid_replica_set_check.rb
85
85
  - lib/ok_computer/built_in_checks/neo4j_check.rb
86
86
  - lib/ok_computer/built_in_checks/optional_check.rb
87
+ - lib/ok_computer/built_in_checks/ping_check.rb
87
88
  - lib/ok_computer/built_in_checks/rabbitmq_check.rb
88
89
  - lib/ok_computer/built_in_checks/redis_check.rb
89
90
  - lib/ok_computer/built_in_checks/resque_backed_up_check.rb