rack-ecg 0.0.3 → 0.2.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.
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-ecg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Envato
8
8
  - Julian Doherty
9
9
  autorequire:
10
- bindir: bin
10
+ bindir: exe
11
11
  cert_chain: []
12
- date: 2017-02-14 00:00:00.000000000 Z
12
+ date: 2022-02-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
@@ -31,108 +31,195 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '1.7'
34
+ version: 2.3.7
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '1.7'
41
+ version: 2.3.7
42
+ - !ruby/object:Gem::Dependency
43
+ name: pry
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 0.14.1
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 0.14.1
56
+ - !ruby/object:Gem::Dependency
57
+ name: rack-test
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: 1.1.0
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 1.1.0
42
70
  - !ruby/object:Gem::Dependency
43
71
  name: rake
44
72
  requirement: !ruby/object:Gem::Requirement
45
73
  requirements:
46
74
  - - "~>"
47
75
  - !ruby/object:Gem::Version
48
- version: '10.0'
76
+ version: '13.0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '13.0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: redcarpet
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: 3.5.0
49
91
  type: :development
50
92
  prerelease: false
51
93
  version_requirements: !ruby/object:Gem::Requirement
52
94
  requirements:
53
95
  - - "~>"
54
96
  - !ruby/object:Gem::Version
55
- version: '10.0'
97
+ version: 3.5.0
56
98
  - !ruby/object:Gem::Dependency
57
99
  name: rspec
58
100
  requirement: !ruby/object:Gem::Requirement
59
101
  requirements:
60
102
  - - "~>"
61
103
  - !ruby/object:Gem::Version
62
- version: 3.2.0
104
+ version: 3.11.0
63
105
  type: :development
64
106
  prerelease: false
65
107
  version_requirements: !ruby/object:Gem::Requirement
66
108
  requirements:
67
109
  - - "~>"
68
110
  - !ruby/object:Gem::Version
69
- version: 3.2.0
111
+ version: 3.11.0
70
112
  - !ruby/object:Gem::Dependency
71
- name: rack-test
113
+ name: rubocop-rake
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">"
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">"
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: rubocop-rspec
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">"
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">"
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: rubocop-shopify
72
142
  requirement: !ruby/object:Gem::Requirement
73
143
  requirements:
74
144
  - - "~>"
75
145
  - !ruby/object:Gem::Version
76
- version: 0.6.3
146
+ version: 2.4.0
77
147
  type: :development
78
148
  prerelease: false
79
149
  version_requirements: !ruby/object:Gem::Requirement
80
150
  requirements:
81
151
  - - "~>"
82
152
  - !ruby/object:Gem::Version
83
- version: 0.6.3
153
+ version: 2.4.0
84
154
  - !ruby/object:Gem::Dependency
85
- name: pry
155
+ name: yard
86
156
  requirement: !ruby/object:Gem::Requirement
87
157
  requirements:
88
158
  - - "~>"
89
159
  - !ruby/object:Gem::Version
90
- version: 0.10.1
160
+ version: 0.9.24
91
161
  type: :development
92
162
  prerelease: false
93
163
  version_requirements: !ruby/object:Gem::Requirement
94
164
  requirements:
95
165
  - - "~>"
96
166
  - !ruby/object:Gem::Version
97
- version: 0.10.1
98
- description: 'rack-ecg allows you to serve a page that shows you facts about your
99
- deployed app to allow you to check that everything is running as it should: git
100
- revision, database migrations, and more'
167
+ version: 0.9.24
168
+ description: |2
169
+ rack-ecg allows you to serve a page that shows you facts about your deployed
170
+ app to allow you to check that everything is running as it should: git
171
+ revision, database migrations, and more
101
172
  email:
102
173
  - julian@envato.com
103
174
  executables: []
104
175
  extensions: []
105
176
  extra_rdoc_files: []
106
177
  files:
178
+ - ".github/dependabot.yml"
179
+ - ".github/workflows/test.yml"
107
180
  - ".gitignore"
108
181
  - ".rspec"
109
- - ".travis.yml"
182
+ - ".rubocop.yml"
183
+ - ".ruby-version"
184
+ - ".yardopts"
185
+ - CHANGELOG.md
110
186
  - CODE_OF_CONDUCT.md
111
187
  - Gemfile
112
188
  - LICENSE.txt
113
189
  - README.md
114
190
  - Rakefile
191
+ - bin/console
192
+ - bin/setup
193
+ - docker-compose.yml
115
194
  - examples/basic.ru
116
195
  - examples/checks.ru
196
+ - examples/git_revision_check_replacement.ru
197
+ - examples/hook.ru
117
198
  - examples/mounted_path.ru
199
+ - examples/parameters.ru
118
200
  - examples/stand_alone.ru
119
- - gemfiles/rack_v1.gemfile
120
201
  - lib/rack-ecg.rb
121
202
  - lib/rack/ecg.rb
122
203
  - lib/rack/ecg/check.rb
204
+ - lib/rack/ecg/check/active_record_connection.rb
123
205
  - lib/rack/ecg/check/error.rb
124
206
  - lib/rack/ecg/check/git_revision.rb
125
207
  - lib/rack/ecg/check/http.rb
126
208
  - lib/rack/ecg/check/migration_version.rb
209
+ - lib/rack/ecg/check/redis_connection.rb
210
+ - lib/rack/ecg/check/sequel_connection.rb
211
+ - lib/rack/ecg/check/static.rb
212
+ - lib/rack/ecg/check_factory.rb
127
213
  - lib/rack/ecg/check_registry.rb
128
214
  - lib/rack/ecg/version.rb
129
215
  - rack-ecg.gemspec
130
- - spec/rack_middleware_spec.rb
131
- - spec/spec_helper.rb
132
216
  homepage: https://github.com/envato/rack-ecg
133
217
  licenses:
134
218
  - MIT
135
- metadata: {}
219
+ metadata:
220
+ homepage_uri: https://github.com/envato/rack-ecg
221
+ source_code_uri: https://github.com/envato/rack-ecg
222
+ changelog_uri: https://github.com/envato/rack-ecg/blob/main/CHANGELOG.md
136
223
  post_install_message:
137
224
  rdoc_options: []
138
225
  require_paths:
@@ -141,18 +228,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
141
228
  requirements:
142
229
  - - ">="
143
230
  - !ruby/object:Gem::Version
144
- version: '0'
231
+ version: 2.6.0
145
232
  required_rubygems_version: !ruby/object:Gem::Requirement
146
233
  requirements:
147
234
  - - ">="
148
235
  - !ruby/object:Gem::Version
149
236
  version: '0'
150
237
  requirements: []
151
- rubyforge_project:
152
- rubygems_version: 2.4.5.2
238
+ rubygems_version: 3.0.3.1
153
239
  signing_key:
154
240
  specification_version: 4
155
241
  summary: Rack middleware serving a health check page
156
- test_files:
157
- - spec/rack_middleware_spec.rb
158
- - spec/spec_helper.rb
242
+ test_files: []
data/.travis.yml DELETED
@@ -1,28 +0,0 @@
1
- language: ruby
2
- sudo: false
3
- cache: bundler
4
-
5
- rvm:
6
- - 1.9.3
7
- - 2.0
8
- - 2.1
9
- - 2.2.5
10
- - 2.3.1
11
- - ruby-head
12
- - jruby
13
-
14
- gemfile:
15
- - Gemfile
16
- - gemfiles/rack_v1.gemfile
17
-
18
- matrix:
19
- allow_failures:
20
- - rvm: ruby-head
21
- - rvm: jruby
22
- exclude:
23
- - rvm: 1.9.3
24
- gemfile: Gemfile
25
- - rvm: 2.0
26
- gemfile: Gemfile
27
- - rvm: 2.1
28
- gemfile: Gemfile
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'rack', '< 2'
4
- gemspec path: '../'
@@ -1,162 +0,0 @@
1
- require "open3"
2
- require "stringio"
3
-
4
- RSpec.describe "when used as middleware" do
5
- let(:app) {
6
- opts = options
7
- Rack::Builder.new do
8
- use Rack::ECG, opts
9
- run lambda {|env|
10
- if env["PATH_INFO"] == "/hello/world"
11
- [200, {}, ["Hello, World"]]
12
- else
13
- [404, {}, ["Goodbye, World"]]
14
- end
15
- }
16
- end
17
- }
18
- let(:options) {
19
- {} # empty default
20
- }
21
-
22
- context "main app" do
23
- it "responds OK for normal requests" do
24
- get "/hello/world"
25
- expect(last_response).to be_ok
26
- end
27
-
28
- it "doesn't include an X-Rack-ECG-Version custom header" do
29
- get "/hello/world"
30
- expect(last_response.header["X-Rack-ECG-Version"]).to be_nil
31
- end
32
- end
33
-
34
- context "ecg app" do
35
- it "responds " do
36
- get "/_ecg"
37
- expect(last_response).to be_ok
38
- end
39
-
40
- it "includes an X-Rack-ECG-Version custom header" do
41
- get "/_ecg"
42
- expect(last_response.header["X-Rack-ECG-Version"]).to eq(Rack::ECG::VERSION)
43
- end
44
-
45
- context "when `at` config option is set" do
46
- let(:options) {
47
- {at: "/health_check"}
48
- }
49
-
50
- it "responds from that path" do
51
- get "/health_check"
52
- expect(last_response.header["X-Rack-ECG-Version"]).to eq(Rack::ECG::VERSION)
53
- end
54
- end
55
-
56
- context "when all checks pass" do
57
- it "has a success error code" do
58
- get "_ecg"
59
- expect(last_response.status).to eq(200)
60
- end
61
- end
62
-
63
- context "when a checks errors" do
64
- let(:options) {
65
- { checks: [:error] }
66
- }
67
- it "has a success error code" do
68
- get "_ecg"
69
- expect(last_response.status).to eq(500)
70
- end
71
- end
72
-
73
- context "when hook config option is set" do
74
- let(:hook_proc) { instance_double(Proc) }
75
- let(:options) {
76
- { hook: hook_proc, checks: :error }
77
- }
78
-
79
- it "executes the hook proc with success status and check results as params" do
80
- expect(hook_proc).to receive(:call) do |success, check_results|
81
- expect(success).to be_falsey
82
- expect(check_results).to have_key(:error)
83
- end
84
- get "_ecg"
85
- expect(last_response.status).to eq(500)
86
- end
87
- end
88
-
89
- context "git revision" do
90
- let(:options) {
91
- { checks: [:git_revision] }
92
- }
93
- context "when available" do
94
- let(:sha) { "cafe1234" }
95
- it "is reported" do
96
- expect(Open3).to receive(:popen3).
97
- with("git rev-parse HEAD").
98
- and_return([
99
- nil, # stdin
100
- StringIO.new(sha + "\n"), # stdout
101
- StringIO.new(), # stderr
102
- double(value: double(Process::Status, success?: true)) # wait thread & process status
103
- ])
104
- get "/_ecg"
105
- expect(json_body["git_revision"]["status"]).to eq("ok")
106
- expect(json_body["git_revision"]["value"]).to eq(sha)
107
- end
108
- end
109
-
110
- context "when not available" do
111
- let(:error_message) { "git had a sad" }
112
- it "is reported" do
113
- expect(Open3).to receive(:popen3).
114
- with("git rev-parse HEAD").
115
- and_return([
116
- nil, # stdin
117
- StringIO.new(), # stdout
118
- StringIO.new(error_message + "\n"), # stderr
119
- double(value: double(Process::Status, success?: false)) # wait thread & process status
120
- ])
121
- get "/_ecg"
122
- expect(json_body["git_revision"]["status"]).to eq("error")
123
- expect(json_body["git_revision"]["value"]).to eq("git had a sad")
124
- end
125
- end
126
- end
127
-
128
- context "migration version" do
129
- let(:options) {
130
- { checks: [:migration_version] }
131
- }
132
- context "when availabile" do
133
- it "is reported" do
134
- class ActiveRecord
135
- class Base
136
- def self.connection
137
- end
138
- end
139
- end
140
- version = "123456"
141
- connection = double("connection")
142
- expect(ActiveRecord::Base).to receive(:connection).and_return(connection)
143
- expect(connection).to receive(:select_value).
144
- with("select max(version) from schema_migrations").
145
- and_return(version)
146
- get "/_ecg"
147
- expect(json_body["migration_version"]["status"]).to eq("ok")
148
- expect(json_body["migration_version"]["value"]).to eq(version)
149
- end
150
- end
151
-
152
- context "when not available" do
153
- it "is reported" do
154
- Object.send(:remove_const, :ActiveRecord) if defined?(ActiveRecord)
155
- get "/_ecg"
156
- expect(json_body["migration_version"]["status"]).to eq("error")
157
- expect(json_body["migration_version"]["value"]).to eq("ActiveRecord not found")
158
- end
159
- end
160
- end
161
- end
162
- end
data/spec/spec_helper.rb DELETED
@@ -1,23 +0,0 @@
1
- require 'rspec'
2
- require 'rack/test'
3
- require 'rack/ecg'
4
-
5
- RSpec.configure do |config|
6
- config.expect_with :rspec do |expectations|
7
- expectations.include_chain_clauses_in_custom_matcher_descriptions = true
8
- end
9
-
10
- config.mock_with :rspec do |mocks|
11
- mocks.verify_partial_doubles = true
12
- end
13
-
14
- config.disable_monkey_patching!
15
-
16
- config.warnings = true
17
-
18
- config.include Rack::Test::Methods
19
-
20
- def json_body
21
- @json_body ||= JSON.parse(last_response.body)
22
- end
23
- end