rack-maintenance 1.0.0 → 1.1.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 +7 -0
- data/README.rdoc +14 -8
- data/lib/rack/maintenance.rb +5 -1
- data/lib/rack/maintenance/version.rb +1 -1
- data/spec/rack-maintenance_spec.rb +25 -6
- metadata +11 -18
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1390fad941b259bf2086c2c01f5d87a1049a3467
|
4
|
+
data.tar.gz: 638d2bf82a4dc208b6d9c5332b891e94b8be248f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b271c2aed6ffe16ad48f7348e0703bf3f25d402895cc4f9d80c0e6fd6f1c663e80bb8d40adc83029f63ff41837d392f53df47f24f61f43ae4d7234bba5ccccfb
|
7
|
+
data.tar.gz: 0a0f2aefdbc3fc51ccd762ee94f66037203c6714d16612e27355b3a58d149b3689eefe51aa870bcff6f5b331a30f669b9cddc29ca7ecf5f307439089544c15ce
|
data/README.rdoc
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
= rack-maintenance
|
2
2
|
|
3
3
|
Rack::Maintenance is a simple Rack middleware to detect the existence of a
|
4
|
-
maintenance
|
4
|
+
maintenance page and display that instead of incoming requests.
|
5
5
|
|
6
6
|
{<img src="https://secure.travis-ci.org/tilsammans/rack-maintenance.png" />}[http://travis-ci.org/tilsammans/rack-maintenance]
|
7
7
|
|
@@ -19,11 +19,17 @@ and then run `bundle`.
|
|
19
19
|
|
20
20
|
== Usage
|
21
21
|
|
22
|
-
#
|
22
|
+
# html maintenance response
|
23
23
|
config.middleware.use 'Rack::Maintenance',
|
24
24
|
:file => Rails.root.join('public', 'maintenance.html'),
|
25
25
|
:env => 'MAINTENANCE'
|
26
26
|
|
27
|
+
# json maintenance response
|
28
|
+
# it's up to you to provide a valid JSON file!
|
29
|
+
config.middleware.use 'Rack::Maintenance',
|
30
|
+
:file => Rails.root.join('public', 'maintenance.json'),
|
31
|
+
:env => 'MAINTENANCE'
|
32
|
+
|
27
33
|
If <tt>:env</tt> is specified, all requests will be shown the
|
28
34
|
maintenance page if the environment variable is set.
|
29
35
|
|
@@ -32,12 +38,12 @@ If <tt>:env</tt> is not specified, the maintenance page will be shown if it exis
|
|
32
38
|
== Note on Patches/Pull Requests
|
33
39
|
|
34
40
|
* Fork the project.
|
35
|
-
* Make your feature addition or bug fix.
|
36
|
-
* Add tests for it.
|
37
|
-
future version unintentionally.
|
41
|
+
* Make your feature addition or bug fix in a branch.
|
42
|
+
* Add tests for it.
|
38
43
|
* Commit, do not mess with Rakefile or VERSION (do that in a separate commit if you want a local version)
|
39
|
-
*
|
44
|
+
* Push your branch.
|
45
|
+
* Send me a pull request.
|
40
46
|
|
41
|
-
==
|
47
|
+
== License
|
42
48
|
|
43
|
-
|
49
|
+
BSD. See LICENSE for details.
|
data/lib/rack/maintenance.rb
CHANGED
@@ -14,7 +14,7 @@ class Rack::Maintenance
|
|
14
14
|
def call(env)
|
15
15
|
if maintenance? && path_in_app(env)
|
16
16
|
data = File.read(file)
|
17
|
-
[ 503, { 'Content-Type' =>
|
17
|
+
[ 503, { 'Content-Type' => content_type, 'Content-Length' => data.length.to_s }, [data] ]
|
18
18
|
else
|
19
19
|
app.call(env)
|
20
20
|
end
|
@@ -22,6 +22,10 @@ class Rack::Maintenance
|
|
22
22
|
|
23
23
|
private ######################################################################
|
24
24
|
|
25
|
+
def content_type
|
26
|
+
file.end_with?('json') ? 'application/json' : 'text/html'
|
27
|
+
end
|
28
|
+
|
25
29
|
def environment
|
26
30
|
options[:env]
|
27
31
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
require 'fileutils'
|
3
3
|
|
4
|
-
|
4
|
+
shared_examples "RackMaintenance" do
|
5
5
|
let(:app) { Class.new { def call(env); end }.new }
|
6
|
-
let(:rack) { Rack::Maintenance.new(app, :file =>
|
6
|
+
let(:rack) { Rack::Maintenance.new(app, :file => file_name) }
|
7
7
|
|
8
8
|
context "without a :file option" do
|
9
9
|
it "raises an error" do
|
@@ -22,11 +22,11 @@ describe "RackMaintenance" do
|
|
22
22
|
|
23
23
|
context "with maintenance file" do
|
24
24
|
before do
|
25
|
-
FileUtils.touch
|
25
|
+
FileUtils.touch file_name
|
26
26
|
end
|
27
27
|
|
28
28
|
after do
|
29
|
-
FileUtils.rm
|
29
|
+
FileUtils.rm file_name
|
30
30
|
end
|
31
31
|
|
32
32
|
it "does not call the app" do
|
@@ -35,11 +35,11 @@ describe "RackMaintenance" do
|
|
35
35
|
end
|
36
36
|
|
37
37
|
it "returns the maintenance response" do
|
38
|
-
rack.call({}).should eq [503, {"Content-Type"=>
|
38
|
+
rack.call({}).should eq [503, {"Content-Type"=>content_type, "Content-Length"=>"0"}, [""]]
|
39
39
|
end
|
40
40
|
|
41
41
|
context "and :env option MAINTENANCE" do
|
42
|
-
let(:rack) { Rack::Maintenance.new(app, :file =>
|
42
|
+
let(:rack) { Rack::Maintenance.new(app, :file => file_name, :env => "MAINTENANCE") }
|
43
43
|
|
44
44
|
context "outside MAINTENANCE env" do
|
45
45
|
it "calls the app" do
|
@@ -53,6 +53,10 @@ describe "RackMaintenance" do
|
|
53
53
|
ENV['MAINTENANCE'] = "true"
|
54
54
|
end
|
55
55
|
|
56
|
+
after do
|
57
|
+
ENV.delete("MAINTENANCE")
|
58
|
+
end
|
59
|
+
|
56
60
|
it "does not call the app" do
|
57
61
|
app.should_not_receive :call
|
58
62
|
rack.call({})
|
@@ -68,3 +72,18 @@ describe "RackMaintenance" do
|
|
68
72
|
end
|
69
73
|
end
|
70
74
|
end
|
75
|
+
|
76
|
+
describe "RackMaintenance with json maintenance file" do
|
77
|
+
it_behaves_like "RackMaintenance" do
|
78
|
+
let(:file_name) { "spec/maintenance.json" }
|
79
|
+
let(:content_type) { "application/json" }
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe "RackMaintenance with html maintenance file" do
|
84
|
+
it_behaves_like "RackMaintenance" do
|
85
|
+
let(:file_name) { "spec/maintenance.html" }
|
86
|
+
let(:content_type) { "text/html" }
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-maintenance
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- David Dollar
|
@@ -10,38 +9,34 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2014-02-13 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: rack
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
|
-
- -
|
18
|
+
- - '>='
|
21
19
|
- !ruby/object:Gem::Version
|
22
20
|
version: '1.0'
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
|
-
- -
|
25
|
+
- - '>='
|
29
26
|
- !ruby/object:Gem::Version
|
30
27
|
version: '1.0'
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: rspec
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
|
-
- -
|
32
|
+
- - '>='
|
37
33
|
- !ruby/object:Gem::Version
|
38
34
|
version: '2.0'
|
39
35
|
type: :development
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
|
-
- -
|
39
|
+
- - '>='
|
45
40
|
- !ruby/object:Gem::Version
|
46
41
|
version: '2.0'
|
47
42
|
description: Detect and show a maintenance page
|
@@ -62,29 +57,27 @@ files:
|
|
62
57
|
- spec/spec_helper.rb
|
63
58
|
homepage: http://github.com/tilsammans/rack-maintenance
|
64
59
|
licenses: []
|
60
|
+
metadata: {}
|
65
61
|
post_install_message:
|
66
62
|
rdoc_options: []
|
67
63
|
require_paths:
|
68
64
|
- lib
|
69
65
|
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
-
none: false
|
71
66
|
requirements:
|
72
|
-
- -
|
67
|
+
- - '>='
|
73
68
|
- !ruby/object:Gem::Version
|
74
69
|
version: '0'
|
75
70
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
-
none: false
|
77
71
|
requirements:
|
78
|
-
- -
|
72
|
+
- - '>='
|
79
73
|
- !ruby/object:Gem::Version
|
80
74
|
version: '0'
|
81
75
|
requirements: []
|
82
76
|
rubyforge_project:
|
83
|
-
rubygems_version:
|
77
|
+
rubygems_version: 2.0.14
|
84
78
|
signing_key:
|
85
|
-
specification_version:
|
79
|
+
specification_version: 4
|
86
80
|
summary: Detect and show a maintenance page
|
87
81
|
test_files:
|
88
82
|
- spec/rack-maintenance_spec.rb
|
89
83
|
- spec/spec_helper.rb
|
90
|
-
has_rdoc:
|