rack-maintenance 2.0.0 → 3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 00d9c81cf601e50ec54555b564e842dfff9eaff9
4
- data.tar.gz: b95a117e0726e15354f091c1b8a6e1fb6b58fac5
2
+ SHA256:
3
+ metadata.gz: 3e7ae1d29d3548b2408d75ed5448791d2b0ad2495c09573b822d3d761e5e1c56
4
+ data.tar.gz: 81f58cd2d0e9980b6c52980390ad55bb591bbe5ee7a53d541d1886c70fa6609d
5
5
  SHA512:
6
- metadata.gz: 018311df2e17fea006d1e638ee1e0b15c57c9b68ee2cff5d763c74291f9bc4f035a5d65e15baebc4069fffc8ddecd029f4ddfcdbb014c9882a94b178cd7690ca
7
- data.tar.gz: 45d6334d82a8fe3a25e87f11c0823b5a24044a7b069feb738b3355905fc9fd494d203744b91e375d29a935250aab633806518c90f984f8d5a09bf3ce752bc3d1
6
+ metadata.gz: 2742569f5de877db92511d930e763a26a3e98a0717b62d4d787b5b02327272c2de6f9faae4859ab748b1afc31ee074d57854cc3d67998cebfbe7faeef5d78a5a
7
+ data.tar.gz: 33ce46fd7d5480d5da8d95f97269331fec8bdb29330ba3ffe27b7007f1b6f8474a593091bd61562f44ef6f180e96679b1ed4e28b002415c35fd0240b21f73f1f
data/LICENSE CHANGED
@@ -1,4 +1,5 @@
1
1
  Copyright (c) 2009 David Dollar
2
+ Copyright (c) 2012 - 2022 Joost Baaij
2
3
 
3
4
  Permission is hereby granted, free of charge, to any person obtaining
4
5
  a copy of this software and associated documentation files (the
data/README.rdoc CHANGED
@@ -3,7 +3,7 @@
3
3
  Rack::Maintenance is a simple Rack middleware to detect the existence of a
4
4
  maintenance page and display that instead of incoming requests.
5
5
 
6
- {<img src="https://secure.travis-ci.org/tilsammans/rack-maintenance.png" />}[http://travis-ci.org/tilsammans/rack-maintenance]
6
+ {<img src="https://travis-ci.org/tilsammans/rack-maintenance.svg?branch=master" alt="Build Status" />}[https://travis-ci.org/tilsammans/rack-maintenance]
7
7
 
8
8
  == Installation
9
9
 
@@ -30,6 +30,14 @@ and then run `bundle`.
30
30
  :file => Rails.root.join('public', 'maintenance.json'),
31
31
  :env => 'MAINTENANCE'
32
32
 
33
+ # You may provide an object that responds to call to provide
34
+ # post-processing of the maintenance page such as merging
35
+ # ENV values into the page through ERB
36
+ config.middleware.use 'Rack::Maintenance',
37
+ :file => Rails.root.join('public', 'maintenance.html.erb'),
38
+ :env => 'MAINTENANCE',
39
+ :processor => lambda { |content| ERB.new(content).result }
40
+
33
41
  If <tt>:env</tt> is specified, all requests will be shown the
34
42
  maintenance page if the environment variable is set.
35
43
 
@@ -42,10 +50,6 @@ If <tt>:env</tt> is not specified, the maintenance page will be shown if it exis
42
50
  :file => Rails.root.join('public', 'maintenance.html'),
43
51
  :without => /\A\/assets/
44
52
 
45
- If <tt>:paths</tt> is specified, only the paths specified in the given regular
46
- expression will be put on maintenance mode. This is useful if you still want
47
- access to an admin interface, as shown on the example.
48
-
49
53
  == Note on Patches/Pull Requests
50
54
 
51
55
  * Fork the project.
@@ -55,6 +59,10 @@ access to an admin interface, as shown on the example.
55
59
  * Push your branch.
56
60
  * Send me a pull request.
57
61
 
62
+ == Space Babies
63
+
64
+ We create internet. http://www.spacebabies.nl
65
+
58
66
  == License
59
67
 
60
68
  BSD. See LICENSE for details.
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  class Maintenance
3
- VERSION = "2.0.0"
3
+ VERSION = "3.0.0"
4
4
  end
5
5
  end
@@ -13,8 +13,9 @@ class Rack::Maintenance
13
13
 
14
14
  def call(env)
15
15
  if maintenance? && path_in_app(env)
16
- data = File.read(file)
17
- [ 503, { 'Content-Type' => content_type, 'Content-Length' => data.length.to_s }, [data] ]
16
+ content = File.read(file)
17
+ data = processor.call(content)
18
+ [ 503, { 'Content-Type' => content_type, 'Content-Length' => data.bytesize.to_s }, [data] ]
18
19
  else
19
20
  app.call(env)
20
21
  end
@@ -34,6 +35,10 @@ private ######################################################################
34
35
  options[:file]
35
36
  end
36
37
 
38
+ def processor
39
+ options[:processor] || lambda { |content| content }
40
+ end
41
+
37
42
  def maintenance?
38
43
  environment ? ENV[environment] : File.exists?(file)
39
44
  end
@@ -4,6 +4,7 @@ require 'fileutils'
4
4
  shared_examples "RackMaintenance" do
5
5
  let(:app) { Class.new { def call(env); end }.new }
6
6
  let(:rack) { Rack::Maintenance.new(app, :file => file_name) }
7
+ let(:data) { data = File.read(file_name) }
7
8
 
8
9
  context "without a :file option" do
9
10
  it "raises an error" do
@@ -14,6 +15,10 @@ shared_examples "RackMaintenance" do
14
15
  end
15
16
 
16
17
  context "without maintenance file" do
18
+ before do
19
+ FileUtils.rm(file_name) if File.exists?(file_name)
20
+ end
21
+
17
22
  it "calls the app" do
18
23
  app.should_receive(:call).once
19
24
  rack.call({})
@@ -35,7 +40,7 @@ shared_examples "RackMaintenance" do
35
40
  end
36
41
 
37
42
  it "returns the maintenance response" do
38
- rack.call({}).should eq [503, {"Content-Type"=>content_type, "Content-Length"=>"0"}, [""]]
43
+ rack.call({}).should eq [503, {"Content-Type"=>content_type, "Content-Length"=>data.bytesize.to_s}, [data]]
39
44
  end
40
45
 
41
46
  context "and :env option MAINTENANCE" do
@@ -61,6 +66,18 @@ shared_examples "RackMaintenance" do
61
66
  app.should_not_receive :call
62
67
  rack.call({})
63
68
  end
69
+
70
+ context "and :processor option" do
71
+ let(:processor) { lambda { |content| ERB.new(content).result } }
72
+ let(:rack) do
73
+ Rack::Maintenance.new(app, :file => file_name, :processor => processor )
74
+ end
75
+
76
+ it "passes the file content to the processor" do
77
+ processor.should_receive(:call).with(data).and_call_original
78
+ rack.call({})
79
+ end
80
+ end
64
81
  end
65
82
  end
66
83
 
@@ -98,3 +115,12 @@ describe "RackMaintenance with html maintenance file" do
98
115
  end
99
116
  end
100
117
 
118
+ describe "RackMaintenance with unicode maintenance file" do
119
+ before do
120
+ FileUtils.cp 'spec/unicode.html', 'spec/maintenance.html'
121
+ end
122
+ it_behaves_like "RackMaintenance" do
123
+ let(:file_name) { "spec/maintenance.html" }
124
+ let(:content_type) { "text/html" }
125
+ end
126
+ end
data/spec/unicode.html ADDED
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Under Maintenance</title>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6
+ </head>
7
+
8
+ <body>
9
+ <div class="dialog">
10
+ <h1>ขณะนี้กำลังอยู่ระหว่างการปรับปรุงระบบ</h1>
11
+ </div>
12
+ </body>
13
+ </html>
metadata CHANGED
@@ -1,42 +1,56 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-maintenance
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Dollar
8
8
  - Joost Baaij
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-09-09 00:00:00.000000000 Z
12
+ date: 2022-07-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '>='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '1.0'
20
+ version: 2.1.4
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - '>='
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '1.0'
27
+ version: 2.1.4
28
+ - !ruby/object:Gem::Dependency
29
+ name: rake
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 12.3.3
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: 12.3.3
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: rspec
30
44
  requirement: !ruby/object:Gem::Requirement
31
45
  requirements:
32
- - - '>='
46
+ - - ">="
33
47
  - !ruby/object:Gem::Version
34
48
  version: '2.0'
35
49
  type: :development
36
50
  prerelease: false
37
51
  version_requirements: !ruby/object:Gem::Requirement
38
52
  requirements:
39
- - - '>='
53
+ - - ">="
40
54
  - !ruby/object:Gem::Version
41
55
  version: '2.0'
42
56
  description: Detect and show a maintenance page
@@ -47,18 +61,30 @@ executables: []
47
61
  extensions: []
48
62
  extra_rdoc_files: []
49
63
  files:
50
- - lib/rack/maintenance/version.rb
51
- - lib/rack/maintenance.rb
52
- - lib/rack-maintenance.rb
53
64
  - LICENSE
54
- - Rakefile
55
65
  - README.rdoc
66
+ - Rakefile
67
+ - lib/rack-maintenance.rb
68
+ - lib/rack/maintenance.rb
69
+ - lib/rack/maintenance/version.rb
56
70
  - spec/rack-maintenance_spec.rb
57
71
  - spec/spec_helper.rb
72
+ - spec/unicode.html
58
73
  homepage: http://github.com/tilsammans/rack-maintenance
59
74
  licenses: []
60
75
  metadata: {}
61
- post_install_message: |2+
76
+ post_install_message: |+
77
+ ******** Rack::Maintenance 3.0.0 *********
78
+
79
+ This gem now requires rack version 2.1.4 or higher.
80
+
81
+ The reason for this change is that earlier versions have
82
+ security vulnerabilities. Because of this major change, I
83
+ took the time to require up-to-date versions of all
84
+ dependencies.
85
+
86
+ Rack::Maintenance 3.0.0 should be a drop-in upgrade.
87
+
62
88
 
63
89
  ******** Rack::Maintenance 2.0.0 *********
64
90
 
@@ -78,20 +104,21 @@ require_paths:
78
104
  - lib
79
105
  required_ruby_version: !ruby/object:Gem::Requirement
80
106
  requirements:
81
- - - '>='
107
+ - - ">="
82
108
  - !ruby/object:Gem::Version
83
109
  version: '0'
84
110
  required_rubygems_version: !ruby/object:Gem::Requirement
85
111
  requirements:
86
- - - '>='
112
+ - - ">="
87
113
  - !ruby/object:Gem::Version
88
114
  version: '0'
89
115
  requirements: []
90
- rubyforge_project:
91
- rubygems_version: 2.0.3
92
- signing_key:
116
+ rubygems_version: 3.2.3
117
+ signing_key:
93
118
  specification_version: 4
94
119
  summary: Detect and show a maintenance page
95
120
  test_files:
96
121
  - spec/rack-maintenance_spec.rb
97
122
  - spec/spec_helper.rb
123
+ - spec/unicode.html
124
+ ...