revision_plate 0.1.2 → 1.0.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 +5 -5
- data/lib/revision_plate/app.rb +2 -2
- data/lib/revision_plate/version.rb +1 -1
- metadata +15 -29
- data/.gitignore +0 -14
- data/.travis.yml +0 -21
- data/Gemfile +0 -4
- data/revision_plate.gemspec +0 -27
- data/test/app_test.rb +0 -170
- data/test/middleware_test.rb +0 -81
- data/test/test_helper.rb +0 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 4dc87741daa75c8fcd3bf00353862feb3c9ca6a9e05fc3622910db4db3493ceb
|
|
4
|
+
data.tar.gz: dc0e3322de61280af397fe60264ce81d849a8c2d165a87449ac5810da5186cc5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0d414f95ad1c051069ee53a4d9f553e44b1ec1df5a110f5b8fff52387a021d61879a95ae4d9fc4c7e48bd5fcc33a3a89b4538116b3449b90694dab9cc33b3fe3
|
|
7
|
+
data.tar.gz: 104241447fb88c61daa6f85985c34c81b8ec32e11b33abc1b23c0dec38fb09a186320603d21c5a402431feb2fda7ec51bc180e8047bdb98ed9cb0502176bc961
|
data/lib/revision_plate/app.rb
CHANGED
|
@@ -28,7 +28,7 @@ module RevisionPlate
|
|
|
28
28
|
|
|
29
29
|
def call(env)
|
|
30
30
|
unless ACCEPT_METHODS.include?(env['REQUEST_METHOD']) && (@path ? env['PATH_INFO'] == @path : true)
|
|
31
|
-
return [404, {'
|
|
31
|
+
return [404, {'content-type' => 'text/plain'}, []]
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
if @revision
|
|
@@ -44,7 +44,7 @@ module RevisionPlate
|
|
|
44
44
|
body = ["REVISION_FILE_NOT_FOUND\n"]
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
headers = {'
|
|
47
|
+
headers = {'content-type' => 'text/plain'}
|
|
48
48
|
if env['REQUEST_METHOD'] == 'HEAD'
|
|
49
49
|
[status, headers, []]
|
|
50
50
|
else
|
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.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
-
|
|
8
|
-
|
|
9
|
-
bindir: bin
|
|
7
|
+
- Sorah Fukumori
|
|
8
|
+
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 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
|
|
@@ -82,14 +81,11 @@ dependencies:
|
|
|
82
81
|
version: '0'
|
|
83
82
|
description: ''
|
|
84
83
|
email:
|
|
85
|
-
- sorah
|
|
84
|
+
- her@sorah.jp
|
|
86
85
|
executables: []
|
|
87
86
|
extensions: []
|
|
88
87
|
extra_rdoc_files: []
|
|
89
88
|
files:
|
|
90
|
-
- ".gitignore"
|
|
91
|
-
- ".travis.yml"
|
|
92
|
-
- Gemfile
|
|
93
89
|
- LICENSE.txt
|
|
94
90
|
- README.md
|
|
95
91
|
- Rakefile
|
|
@@ -98,15 +94,10 @@ files:
|
|
|
98
94
|
- lib/revision_plate/middleware.rb
|
|
99
95
|
- lib/revision_plate/rails.rb
|
|
100
96
|
- lib/revision_plate/version.rb
|
|
101
|
-
- revision_plate.gemspec
|
|
102
|
-
- test/app_test.rb
|
|
103
|
-
- test/middleware_test.rb
|
|
104
|
-
- test/test_helper.rb
|
|
105
97
|
homepage: https://github.com/sorah/revision_plate
|
|
106
98
|
licenses:
|
|
107
99
|
- MIT
|
|
108
100
|
metadata: {}
|
|
109
|
-
post_install_message:
|
|
110
101
|
rdoc_options: []
|
|
111
102
|
require_paths:
|
|
112
103
|
- lib
|
|
@@ -121,12 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
121
112
|
- !ruby/object:Gem::Version
|
|
122
113
|
version: '0'
|
|
123
114
|
requirements: []
|
|
124
|
-
|
|
125
|
-
rubygems_version: 2.4.5
|
|
126
|
-
signing_key:
|
|
115
|
+
rubygems_version: 3.6.9
|
|
127
116
|
specification_version: 4
|
|
128
117
|
summary: Rack middleware and application to show deployed application's revision (commit)
|
|
129
|
-
test_files:
|
|
130
|
-
- test/app_test.rb
|
|
131
|
-
- test/middleware_test.rb
|
|
132
|
-
- test/test_helper.rb
|
|
118
|
+
test_files: []
|
data/.gitignore
DELETED
data/.travis.yml
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
language: ruby
|
|
2
|
-
cache: bundler
|
|
3
|
-
sudo: false
|
|
4
|
-
|
|
5
|
-
rvm:
|
|
6
|
-
- 2.0.0
|
|
7
|
-
- 2.1
|
|
8
|
-
- 2.2
|
|
9
|
-
- ruby-head
|
|
10
|
-
|
|
11
|
-
matrix:
|
|
12
|
-
fast_finish: true
|
|
13
|
-
allow_failures:
|
|
14
|
-
- rvm: "ruby-head"
|
|
15
|
-
|
|
16
|
-
before_install:
|
|
17
|
-
- gem i bundler -v 1.8.4
|
|
18
|
-
|
|
19
|
-
script:
|
|
20
|
-
- bundle exec rake
|
|
21
|
-
|
data/Gemfile
DELETED
data/revision_plate.gemspec
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
-
require 'revision_plate/version'
|
|
5
|
-
|
|
6
|
-
Gem::Specification.new do |spec|
|
|
7
|
-
spec.name = "revision_plate"
|
|
8
|
-
spec.version = RevisionPlate::VERSION
|
|
9
|
-
spec.authors = ["Shota Fukumori (sora_h)"]
|
|
10
|
-
spec.email = ["sorah@cookpad.com"]
|
|
11
|
-
spec.summary = %q{Rack middleware and application to show deployed application's revision (commit)}
|
|
12
|
-
spec.description = nil
|
|
13
|
-
spec.homepage = "https://github.com/sorah/revision_plate"
|
|
14
|
-
spec.license = "MIT"
|
|
15
|
-
|
|
16
|
-
spec.files = `git ls-files -z`.split("\x0")
|
|
17
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
18
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
|
-
spec.require_paths = ["lib"]
|
|
20
|
-
|
|
21
|
-
spec.add_development_dependency "bundler", ">= 1.7.8"
|
|
22
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
|
23
|
-
spec.add_development_dependency "minitest", "~> 5.5.1"
|
|
24
|
-
spec.add_development_dependency "rack-test", "~> 0.6.3"
|
|
25
|
-
|
|
26
|
-
spec.add_dependency "rack"
|
|
27
|
-
end
|
data/test/app_test.rb
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
require_relative './test_helper'
|
|
2
|
-
require 'tmpdir'
|
|
3
|
-
|
|
4
|
-
require 'revision_plate/app'
|
|
5
|
-
|
|
6
|
-
class AppTest < Minitest::Spec
|
|
7
|
-
include Rack::Test::Methods
|
|
8
|
-
alias_method :response, :last_response
|
|
9
|
-
|
|
10
|
-
describe 'app' do
|
|
11
|
-
let(:app) { RevisionPlate::App.new(file) }
|
|
12
|
-
let(:tmpdir) { Dir.mktmpdir('revision_plate_app_test') }
|
|
13
|
-
let(:file) { Pathname.new(tmpdir).join('REVISION') }
|
|
14
|
-
|
|
15
|
-
before do
|
|
16
|
-
File.write file.to_s, "a"
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
describe 'with default' do
|
|
20
|
-
let(:app) { RevisionPlate::App.new }
|
|
21
|
-
|
|
22
|
-
describe 'with Rails' do
|
|
23
|
-
before do
|
|
24
|
-
RevisionPlate.const_set :Rails, Class.new {
|
|
25
|
-
def self.root
|
|
26
|
-
@root
|
|
27
|
-
end
|
|
28
|
-
def self.root=(o)
|
|
29
|
-
@root = Pathname.new(o)
|
|
30
|
-
end
|
|
31
|
-
}.tap { |klass|
|
|
32
|
-
klass.root = tmpdir
|
|
33
|
-
}
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
after do
|
|
37
|
-
RevisionPlate.send :remove_const, :Rails
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it 'returns RAILS_ROOT/REVISION' do
|
|
41
|
-
get '/'
|
|
42
|
-
assert_equal 200, response.status
|
|
43
|
-
assert_equal "a\n", response.body
|
|
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
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
describe 'without Rails' do
|
|
56
|
-
it "raises error" do
|
|
57
|
-
assert_raises(ArgumentError) { app }
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
describe 'with path' do
|
|
63
|
-
let(:app) { RevisionPlate::App.new(file, path: '/site/sha') }
|
|
64
|
-
|
|
65
|
-
it "won't respond to request to invalid path" do
|
|
66
|
-
get '/site/sha'
|
|
67
|
-
assert_equal 200, response.status
|
|
68
|
-
assert_equal "a\n", response.body
|
|
69
|
-
|
|
70
|
-
head '/site/sha'
|
|
71
|
-
assert_equal 200, response.status
|
|
72
|
-
assert_equal "", response.body
|
|
73
|
-
|
|
74
|
-
post '/site/sha'
|
|
75
|
-
assert_equal 404, response.status
|
|
76
|
-
|
|
77
|
-
get '/site/sha/a'
|
|
78
|
-
assert_equal 404, response.status
|
|
79
|
-
|
|
80
|
-
head '/site/sha/a'
|
|
81
|
-
assert_equal 404, response.status
|
|
82
|
-
|
|
83
|
-
get '/'
|
|
84
|
-
assert_equal 404, response.status
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it 'returns specified file' do
|
|
89
|
-
get '/'
|
|
90
|
-
assert_equal 200, response.status
|
|
91
|
-
assert_equal "a\n", response.body
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
it 'returns same revision even if updated' do
|
|
95
|
-
app # ensure to instantiate
|
|
96
|
-
File.write file.to_s, "b\n"
|
|
97
|
-
|
|
98
|
-
get '/'
|
|
99
|
-
assert_equal 200, response.status
|
|
100
|
-
assert_equal "a\n", response.body
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
it 'returns 404 for POST request' do
|
|
104
|
-
post '/'
|
|
105
|
-
assert_equal 404, response.status
|
|
106
|
-
end
|
|
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
|
-
|
|
114
|
-
it 'returns 404 if removed' do
|
|
115
|
-
app # ensure to instantiate
|
|
116
|
-
file.unlink
|
|
117
|
-
|
|
118
|
-
get '/'
|
|
119
|
-
assert_equal 404, response.status
|
|
120
|
-
assert_equal "REVISION_FILE_REMOVED\n", response.body
|
|
121
|
-
end
|
|
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
|
-
|
|
132
|
-
it 'returns 404 if not exists' do
|
|
133
|
-
file.unlink
|
|
134
|
-
app # instantiate
|
|
135
|
-
|
|
136
|
-
get '/'
|
|
137
|
-
assert_equal 404, response.status
|
|
138
|
-
assert_equal "REVISION_FILE_NOT_FOUND\n", response.body
|
|
139
|
-
end
|
|
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
|
-
|
|
150
|
-
it 'returns 404 if created but it was not existed' do
|
|
151
|
-
file.unlink
|
|
152
|
-
app # instantiate
|
|
153
|
-
File.write file.to_s, "b\n"
|
|
154
|
-
|
|
155
|
-
get '/'
|
|
156
|
-
assert_equal 404, response.status
|
|
157
|
-
assert_equal "REVISION_FILE_NOT_FOUND\n", response.body
|
|
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
|
|
169
|
-
end
|
|
170
|
-
end
|
data/test/middleware_test.rb
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
require_relative './test_helper'
|
|
2
|
-
require 'tempfile'
|
|
3
|
-
|
|
4
|
-
require 'revision_plate/middleware'
|
|
5
|
-
|
|
6
|
-
module RevisionPlate
|
|
7
|
-
AppOriginal = App
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
class AppTest < Minitest::Spec
|
|
11
|
-
include Rack::Test::Methods
|
|
12
|
-
alias_method :response, :last_response
|
|
13
|
-
|
|
14
|
-
describe 'middleware' do
|
|
15
|
-
let(:tempfile) { Tempfile.new('revision_plate-middielware-test') }
|
|
16
|
-
|
|
17
|
-
let(:nextapp) { -> (env) { [200, {'Content-Type' => 'text/plain'}, ['hi']] } }
|
|
18
|
-
let(:mockapp) do
|
|
19
|
-
Class.new do
|
|
20
|
-
def self.instances
|
|
21
|
-
@instances ||= []
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def initialize(file, **options)
|
|
25
|
-
@file = file
|
|
26
|
-
@options = options
|
|
27
|
-
self.class.instances << self
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
attr_reader :file, :options
|
|
31
|
-
|
|
32
|
-
def call(env)
|
|
33
|
-
[200, {'Content-Type' => 'text/plain'}, "deadbeef"]
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
const_set(:ACCEPT_METHODS, %w[GET HEAD].freeze)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
let(:app) { RevisionPlate::Middleware.new(nextapp, '/site/sha', tempfile.path, opt: :option) }
|
|
41
|
-
|
|
42
|
-
before do
|
|
43
|
-
RevisionPlate.send(:remove_const, :App)
|
|
44
|
-
RevisionPlate.const_set(:App, mockapp)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
after do
|
|
48
|
-
RevisionPlate.send(:remove_const, :App)
|
|
49
|
-
RevisionPlate.const_set(:App, RevisionPlate::AppOriginal)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
it 'instantiates App with proper argument' do
|
|
53
|
-
app
|
|
54
|
-
|
|
55
|
-
assert_equal 1, mockapp.instances.size
|
|
56
|
-
assert_equal({opt: :option}, mockapp.instances.first.options)
|
|
57
|
-
assert_equal tempfile.path, mockapp.instances.first.file
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
it 'pass-through requests to nextapp' do
|
|
61
|
-
get '/'
|
|
62
|
-
assert_equal 'hi', response.body
|
|
63
|
-
post '/'
|
|
64
|
-
assert_equal 'hi', response.body
|
|
65
|
-
get '/site'
|
|
66
|
-
assert_equal 'hi', response.body
|
|
67
|
-
post '/site/sha'
|
|
68
|
-
assert_equal 'hi', response.body
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
it 'pass requests to RevisionPlate::App on specific path' do
|
|
72
|
-
get '/site/sha'
|
|
73
|
-
assert_equal 'deadbeef', response.body
|
|
74
|
-
|
|
75
|
-
head '/site/sha'
|
|
76
|
-
assert_equal 200, response.status
|
|
77
|
-
assert_equal 'deadbeef', response.body
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
data/test/test_helper.rb
DELETED