revision_plate 0.1.1 → 0.1.3
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 +5 -5
- data/Rakefile +0 -1
- data/lib/revision_plate/app.rb +17 -5
- data/lib/revision_plate/middleware.rb +3 -1
- data/lib/revision_plate/version.rb +1 -1
- data/revision_plate.gemspec +4 -4
- data/test/app_test.rb +49 -0
- data/test/middleware_test.rb +13 -7
- metadata +11 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6bc128e2a63da131bdb0d0bf5ed9c99963b9c2c4a1d7da62ff898874852e5b09
|
4
|
+
data.tar.gz: e604795fa2182370168f14f591c9a29e0b3dc618b06510738bc9addc03ab7434
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c05bc4338ed61758f69d391cbd10f224629ed80a136fb12b888782219925124db81a37c1ade7ae78e5d0da556f4fd4f56e6a0d5df5a11297f09c24597b78706b
|
7
|
+
data.tar.gz: 354c13119651d1c8c127d0680f46c46aa03c0cbbf599f9414aad08dcd02b1edabbd0c21825ebff4023d64f347491db0446bcb5897b86333057785c127bd5da12
|
data/Rakefile
CHANGED
data/lib/revision_plate/app.rb
CHANGED
@@ -24,19 +24,31 @@ module RevisionPlate
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
ACCEPT_METHODS = ['GET', 'HEAD'].freeze
|
28
|
+
|
27
29
|
def call(env)
|
28
|
-
unless env['REQUEST_METHOD']
|
29
|
-
return [404, {'
|
30
|
+
unless ACCEPT_METHODS.include?(env['REQUEST_METHOD']) && (@path ? env['PATH_INFO'] == @path : true)
|
31
|
+
return [404, {'content-type' => 'text/plain'}, []]
|
30
32
|
end
|
31
33
|
|
32
34
|
if @revision
|
33
35
|
if @file.exist?
|
34
|
-
|
36
|
+
status = 200
|
37
|
+
body = [@revision, ?\n]
|
35
38
|
else
|
36
|
-
|
39
|
+
status = 404
|
40
|
+
body = ["REVISION_FILE_REMOVED\n"]
|
37
41
|
end
|
38
42
|
else
|
39
|
-
|
43
|
+
status = 404
|
44
|
+
body = ["REVISION_FILE_NOT_FOUND\n"]
|
45
|
+
end
|
46
|
+
|
47
|
+
headers = {'content-type' => 'text/plain'}
|
48
|
+
if env['REQUEST_METHOD'] == 'HEAD'
|
49
|
+
[status, headers, []]
|
50
|
+
else
|
51
|
+
[status, headers, body]
|
40
52
|
end
|
41
53
|
end
|
42
54
|
end
|
@@ -8,8 +8,10 @@ module RevisionPlate
|
|
8
8
|
@revision_app = App.new(file, **options)
|
9
9
|
end
|
10
10
|
|
11
|
+
ACCEPT_METHODS = %w[GET HEAD].freeze
|
12
|
+
|
11
13
|
def call(env)
|
12
|
-
if env['PATH_INFO'] == @path && env['REQUEST_METHOD']
|
14
|
+
if env['PATH_INFO'] == @path && ACCEPT_METHODS.include?(env['REQUEST_METHOD'])
|
13
15
|
@revision_app.call(env)
|
14
16
|
else
|
15
17
|
@app.call(env)
|
data/revision_plate.gemspec
CHANGED
@@ -18,10 +18,10 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler", ">=
|
22
|
-
spec.add_development_dependency "rake", "~>
|
23
|
-
spec.add_development_dependency "minitest", "~> 5.5
|
24
|
-
spec.add_development_dependency "rack-test", "~>
|
21
|
+
spec.add_development_dependency "bundler", ">= 2.6"
|
22
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
23
|
+
spec.add_development_dependency "minitest", "~> 5.5"
|
24
|
+
spec.add_development_dependency "rack-test", "~> 2.2"
|
25
25
|
|
26
26
|
spec.add_dependency "rack"
|
27
27
|
end
|
data/test/app_test.rb
CHANGED
@@ -42,6 +42,14 @@ class AppTest < Minitest::Spec
|
|
42
42
|
assert_equal 200, response.status
|
43
43
|
assert_equal "a\n", response.body
|
44
44
|
end
|
45
|
+
|
46
|
+
describe 'HEAD request' do
|
47
|
+
it 'returns 200' do
|
48
|
+
head '/'
|
49
|
+
assert_equal 200, response.status
|
50
|
+
assert_equal '', response.body
|
51
|
+
end
|
52
|
+
end
|
45
53
|
end
|
46
54
|
|
47
55
|
describe 'without Rails' do
|
@@ -59,12 +67,19 @@ class AppTest < Minitest::Spec
|
|
59
67
|
assert_equal 200, response.status
|
60
68
|
assert_equal "a\n", response.body
|
61
69
|
|
70
|
+
head '/site/sha'
|
71
|
+
assert_equal 200, response.status
|
72
|
+
assert_equal "", response.body
|
73
|
+
|
62
74
|
post '/site/sha'
|
63
75
|
assert_equal 404, response.status
|
64
76
|
|
65
77
|
get '/site/sha/a'
|
66
78
|
assert_equal 404, response.status
|
67
79
|
|
80
|
+
head '/site/sha/a'
|
81
|
+
assert_equal 404, response.status
|
82
|
+
|
68
83
|
get '/'
|
69
84
|
assert_equal 404, response.status
|
70
85
|
end
|
@@ -90,6 +105,12 @@ class AppTest < Minitest::Spec
|
|
90
105
|
assert_equal 404, response.status
|
91
106
|
end
|
92
107
|
|
108
|
+
it 'returns 200 for HEAD request' do
|
109
|
+
head '/'
|
110
|
+
assert_equal 200, response.status
|
111
|
+
assert_equal '', response.body
|
112
|
+
end
|
113
|
+
|
93
114
|
it 'returns 404 if removed' do
|
94
115
|
app # ensure to instantiate
|
95
116
|
file.unlink
|
@@ -99,6 +120,15 @@ class AppTest < Minitest::Spec
|
|
99
120
|
assert_equal "REVISION_FILE_REMOVED\n", response.body
|
100
121
|
end
|
101
122
|
|
123
|
+
it 'returns 404 for HEAD request if removed' do
|
124
|
+
app # ensure to instantiate
|
125
|
+
file.unlink
|
126
|
+
|
127
|
+
head '/'
|
128
|
+
assert_equal 404, response.status
|
129
|
+
assert_equal '', response.body
|
130
|
+
end
|
131
|
+
|
102
132
|
it 'returns 404 if not exists' do
|
103
133
|
file.unlink
|
104
134
|
app # instantiate
|
@@ -108,6 +138,15 @@ class AppTest < Minitest::Spec
|
|
108
138
|
assert_equal "REVISION_FILE_NOT_FOUND\n", response.body
|
109
139
|
end
|
110
140
|
|
141
|
+
it 'returns 404 for HEAD request if not exists' do
|
142
|
+
file.unlink
|
143
|
+
app # instantiate
|
144
|
+
|
145
|
+
head '/'
|
146
|
+
assert_equal 404, response.status
|
147
|
+
assert_equal '', response.body
|
148
|
+
end
|
149
|
+
|
111
150
|
it 'returns 404 if created but it was not existed' do
|
112
151
|
file.unlink
|
113
152
|
app # instantiate
|
@@ -117,5 +156,15 @@ class AppTest < Minitest::Spec
|
|
117
156
|
assert_equal 404, response.status
|
118
157
|
assert_equal "REVISION_FILE_NOT_FOUND\n", response.body
|
119
158
|
end
|
159
|
+
|
160
|
+
it 'returns 404 for HEAD request if created but it was not existed' do
|
161
|
+
file.unlink
|
162
|
+
app # instantiate
|
163
|
+
File.write file.to_s, "b\n"
|
164
|
+
|
165
|
+
head '/'
|
166
|
+
assert_equal 404, response.status
|
167
|
+
assert_equal '', response.body
|
168
|
+
end
|
120
169
|
end
|
121
170
|
end
|
data/test/middleware_test.rb
CHANGED
@@ -14,7 +14,7 @@ class AppTest < Minitest::Spec
|
|
14
14
|
describe 'middleware' do
|
15
15
|
let(:tempfile) { Tempfile.new('revision_plate-middielware-test') }
|
16
16
|
|
17
|
-
let(:nextapp) { -> (env) { [200, {'
|
17
|
+
let(:nextapp) { -> (env) { [200, {'content-type' => 'text/plain'}, ['hi']] } }
|
18
18
|
let(:mockapp) do
|
19
19
|
Class.new do
|
20
20
|
def self.instances
|
@@ -30,8 +30,10 @@ class AppTest < Minitest::Spec
|
|
30
30
|
attr_reader :file, :options
|
31
31
|
|
32
32
|
def call(env)
|
33
|
-
[200, {'
|
33
|
+
[200, {'content-type' => 'text/plain'}, "deadbeef"]
|
34
34
|
end
|
35
|
+
|
36
|
+
const_set(:ACCEPT_METHODS, %w[GET HEAD].freeze)
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
@@ -57,18 +59,22 @@ class AppTest < Minitest::Spec
|
|
57
59
|
|
58
60
|
it 'pass-through requests to nextapp' do
|
59
61
|
get '/'
|
60
|
-
assert_equal response.body
|
62
|
+
assert_equal 'hi', response.body
|
61
63
|
post '/'
|
62
|
-
assert_equal response.body
|
64
|
+
assert_equal 'hi', response.body
|
63
65
|
get '/site'
|
64
|
-
assert_equal response.body
|
66
|
+
assert_equal 'hi', response.body
|
65
67
|
post '/site/sha'
|
66
|
-
assert_equal response.body
|
68
|
+
assert_equal 'hi', response.body
|
67
69
|
end
|
68
70
|
|
69
71
|
it 'pass requests to RevisionPlate::App on specific path' do
|
70
72
|
get '/site/sha'
|
71
|
-
assert_equal response.body
|
73
|
+
assert_equal 'deadbeef', response.body
|
74
|
+
|
75
|
+
head '/site/sha'
|
76
|
+
assert_equal 200, response.status
|
77
|
+
assert_equal 'deadbeef', response.body
|
72
78
|
end
|
73
79
|
end
|
74
80
|
end
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: revision_plate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shota Fukumori (sora_h)
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-02-27 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: bundler
|
@@ -16,56 +15,56 @@ dependencies:
|
|
16
15
|
requirements:
|
17
16
|
- - ">="
|
18
17
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
18
|
+
version: '2.6'
|
20
19
|
type: :development
|
21
20
|
prerelease: false
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
23
22
|
requirements:
|
24
23
|
- - ">="
|
25
24
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
25
|
+
version: '2.6'
|
27
26
|
- !ruby/object:Gem::Dependency
|
28
27
|
name: rake
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
30
29
|
requirements:
|
31
30
|
- - "~>"
|
32
31
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
32
|
+
version: '13.0'
|
34
33
|
type: :development
|
35
34
|
prerelease: false
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
37
36
|
requirements:
|
38
37
|
- - "~>"
|
39
38
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
39
|
+
version: '13.0'
|
41
40
|
- !ruby/object:Gem::Dependency
|
42
41
|
name: minitest
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
44
43
|
requirements:
|
45
44
|
- - "~>"
|
46
45
|
- !ruby/object:Gem::Version
|
47
|
-
version: 5.5
|
46
|
+
version: '5.5'
|
48
47
|
type: :development
|
49
48
|
prerelease: false
|
50
49
|
version_requirements: !ruby/object:Gem::Requirement
|
51
50
|
requirements:
|
52
51
|
- - "~>"
|
53
52
|
- !ruby/object:Gem::Version
|
54
|
-
version: 5.5
|
53
|
+
version: '5.5'
|
55
54
|
- !ruby/object:Gem::Dependency
|
56
55
|
name: rack-test
|
57
56
|
requirement: !ruby/object:Gem::Requirement
|
58
57
|
requirements:
|
59
58
|
- - "~>"
|
60
59
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
60
|
+
version: '2.2'
|
62
61
|
type: :development
|
63
62
|
prerelease: false
|
64
63
|
version_requirements: !ruby/object:Gem::Requirement
|
65
64
|
requirements:
|
66
65
|
- - "~>"
|
67
66
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
67
|
+
version: '2.2'
|
69
68
|
- !ruby/object:Gem::Dependency
|
70
69
|
name: rack
|
71
70
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,7 +105,6 @@ homepage: https://github.com/sorah/revision_plate
|
|
106
105
|
licenses:
|
107
106
|
- MIT
|
108
107
|
metadata: {}
|
109
|
-
post_install_message:
|
110
108
|
rdoc_options: []
|
111
109
|
require_paths:
|
112
110
|
- lib
|
@@ -121,9 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
119
|
- !ruby/object:Gem::Version
|
122
120
|
version: '0'
|
123
121
|
requirements: []
|
124
|
-
|
125
|
-
rubygems_version: 2.4.5
|
126
|
-
signing_key:
|
122
|
+
rubygems_version: 3.6.2
|
127
123
|
specification_version: 4
|
128
124
|
summary: Rack middleware and application to show deployed application's revision (commit)
|
129
125
|
test_files:
|