rack-maintenance 0.3.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -3,10 +3,20 @@
3
3
  Rack::Maintenance is a simple Rack middleware to detect the existence of a
4
4
  maintenance.html 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]
7
+
6
8
  == Installation
7
9
 
8
10
  sudo gem install rack-maintenance
9
11
 
12
+ == Installation with Bundler
13
+
14
+ In Gemfile:
15
+
16
+ gem 'rack-maintenance'
17
+
18
+ and then run `bundle`.
19
+
10
20
  == Usage
11
21
 
12
22
  # config/environment.rb
data/Rakefile CHANGED
@@ -1,45 +1,7 @@
1
- require 'rubygems'
2
- require 'rake'
1
+ require "bundler/gem_tasks"
3
2
 
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "rack-maintenance"
8
- gem.summary = %Q{Detect and show a maintenance page}
9
- gem.description = gem.summary
10
- gem.email = "<ddollar@gmail.com>"
11
- gem.homepage = "http://github.com/ddollar/rack-maintenance"
12
- gem.authors = ["David Dollar"]
13
- gem.add_development_dependency "rspec"
14
- gem.add_development_dependency "yard"
15
- gem.add_dependency 'rack', '>= 1.0'
16
- end
17
- Jeweler::GemcutterTasks.new
18
- rescue LoadError
19
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
20
- end
3
+ require "rspec/core/rake_task"
21
4
 
22
- require 'spec/rake/spectask'
23
- Spec::Rake::SpecTask.new(:spec) do |spec|
24
- spec.libs << 'lib' << 'spec'
25
- spec.spec_files = FileList['spec/**/*_spec.rb']
26
- end
27
-
28
- Spec::Rake::SpecTask.new(:rcov) do |spec|
29
- spec.libs << 'lib' << 'spec'
30
- spec.pattern = 'spec/**/*_spec.rb'
31
- spec.rcov = true
32
- end
33
-
34
- task :spec => :check_dependencies
5
+ RSpec::Core::RakeTask.new('spec')
35
6
 
36
7
  task :default => :spec
37
-
38
- begin
39
- require 'yard'
40
- YARD::Rake::YardocTask.new
41
- rescue LoadError
42
- task :yardoc do
43
- abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
44
- end
45
- end
@@ -0,0 +1 @@
1
+ require 'rack/maintenance'
@@ -12,7 +12,7 @@ class Rack::Maintenance
12
12
  end
13
13
 
14
14
  def call(env)
15
- if maintenance?
15
+ if maintenance? && path_in_app(env)
16
16
  data = File.read(file)
17
17
  [ 503, { 'Content-Type' => 'text/html', 'Content-Length' => data.length.to_s }, [data] ]
18
18
  else
@@ -34,4 +34,8 @@ private ######################################################################
34
34
  environment ? ENV[environment] : File.exists?(file)
35
35
  end
36
36
 
37
+ def path_in_app(env)
38
+ env["PATH_INFO"] !~ /^\/assets/
39
+ end
40
+
37
41
  end
@@ -0,0 +1,5 @@
1
+ module Rack
2
+ class Maintenance
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
@@ -1,7 +1,70 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+ require 'fileutils'
2
3
 
3
4
  describe "RackMaintenance" do
4
- it "fails" do
5
- fail "hey buddy, you should probably rename this file and start specing for real"
5
+ let(:app) { Class.new { def call(env); end }.new }
6
+ let(:rack) { Rack::Maintenance.new(app, :file => "spec/maintenance.html") }
7
+
8
+ context "without a :file option" do
9
+ it "raises an error" do
10
+ expect {
11
+ Rack::Maintenance.new(app)
12
+ }.to raise_error(ArgumentError)
13
+ end
14
+ end
15
+
16
+ context "without maintenance file" do
17
+ it "calls the app" do
18
+ app.should_receive(:call).once
19
+ rack.call({})
20
+ end
21
+ end
22
+
23
+ context "with maintenance file" do
24
+ before do
25
+ FileUtils.touch 'spec/maintenance.html'
26
+ end
27
+
28
+ after do
29
+ FileUtils.rm 'spec/maintenance.html'
30
+ end
31
+
32
+ it "does not call the app" do
33
+ app.should_not_receive :call
34
+ rack.call({})
35
+ end
36
+
37
+ it "returns the maintenance response" do
38
+ rack.call({}).should eq [503, {"Content-Type"=>"text/html", "Content-Length"=>"0"}, [""]]
39
+ end
40
+
41
+ context "and :env option MAINTENANCE" do
42
+ let(:rack) { Rack::Maintenance.new(app, :file => "spec/maintenance.html", :env => "MAINTENANCE") }
43
+
44
+ context "outside MAINTENANCE env" do
45
+ it "calls the app" do
46
+ app.should_receive(:call).once
47
+ rack.call({})
48
+ end
49
+ end
50
+
51
+ context "inside MAINTENANCE env" do
52
+ before do
53
+ ENV['MAINTENANCE'] = "true"
54
+ end
55
+
56
+ it "does not call the app" do
57
+ app.should_not_receive :call
58
+ rack.call({})
59
+ end
60
+ end
61
+ end
62
+
63
+ context "and request to /assets" do
64
+ it "calls the app" do
65
+ app.should_receive(:call).once
66
+ rack.call({"PATH_INFO"=>"/assets/application.css"})
67
+ end
68
+ end
6
69
  end
7
70
  end
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,10 @@
1
- $LOAD_PATH.unshift(File.dirname(__FILE__))
2
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
- require 'rack-maintenance'
4
- require 'spec'
5
- require 'spec/autorun'
1
+ require 'rubygems'
2
+ require 'bundler/setup'
6
3
 
7
- Spec::Runner.configure do |config|
8
-
4
+ require 'rack/maintenance'
5
+
6
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
7
+
8
+ RSpec.configure do |config|
9
+ # some optional config here
9
10
  end
metadata CHANGED
@@ -1,95 +1,90 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rack-maintenance
3
- version: !ruby/object:Gem::Version
4
- version: 0.3.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
5
6
  platform: ruby
6
- authors:
7
+ authors:
7
8
  - David Dollar
9
+ - Joost Baaij
8
10
  autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
-
12
- date: 2009-08-31 00:00:00 -04:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: rspec
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
25
- - !ruby/object:Gem::Dependency
26
- name: yard
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: "0"
34
- version:
35
- - !ruby/object:Gem::Dependency
13
+ date: 2012-09-28 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
36
16
  name: rack
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '1.0'
37
23
  type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: "1.0"
44
- version:
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '1.0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: rspec
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '2.0'
39
+ type: :development
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '2.0'
45
47
  description: Detect and show a maintenance page
46
- email: <ddollar@gmail.com>
48
+ email:
49
+ - ddollar@gmail.com
50
+ - joost@spacebabies.nl
47
51
  executables: []
48
-
49
52
  extensions: []
50
-
51
- extra_rdoc_files:
52
- - LICENSE
53
- - README.rdoc
54
- files:
55
- - .document
56
- - .gitignore
53
+ extra_rdoc_files: []
54
+ files:
55
+ - lib/rack/maintenance/version.rb
56
+ - lib/rack/maintenance.rb
57
+ - lib/rack-maintenance.rb
57
58
  - LICENSE
58
- - README.rdoc
59
59
  - Rakefile
60
- - VERSION
61
- - lib/rack/maintenance.rb
62
- - rack-maintenance.gemspec
60
+ - README.rdoc
63
61
  - spec/rack-maintenance_spec.rb
64
62
  - spec/spec_helper.rb
65
- has_rdoc: true
66
- homepage: http://github.com/ddollar/rack-maintenance
63
+ homepage: http://github.com/tilsammans/rack-maintenance
67
64
  licenses: []
68
-
69
65
  post_install_message:
70
- rdoc_options:
71
- - --charset=UTF-8
72
- require_paths:
66
+ rdoc_options: []
67
+ require_paths:
73
68
  - lib
74
- required_ruby_version: !ruby/object:Gem::Requirement
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: "0"
79
- version:
80
- required_rubygems_version: !ruby/object:Gem::Requirement
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- version: "0"
85
- version:
69
+ required_ruby_version: !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ! '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
86
81
  requirements: []
87
-
88
82
  rubyforge_project:
89
- rubygems_version: 1.3.5
83
+ rubygems_version: 1.8.23
90
84
  signing_key:
91
85
  specification_version: 3
92
86
  summary: Detect and show a maintenance page
93
- test_files:
87
+ test_files:
94
88
  - spec/rack-maintenance_spec.rb
95
89
  - spec/spec_helper.rb
90
+ has_rdoc:
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/.gitignore DELETED
@@ -1,5 +0,0 @@
1
- *.sw?
2
- .DS_Store
3
- coverage
4
- rdoc
5
- pkg
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.3.0
@@ -1,59 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{rack-maintenance}
8
- s.version = "0.3.0"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["David Dollar"]
12
- s.date = %q{2009-08-31}
13
- s.description = %q{Detect and show a maintenance page}
14
- s.email = %q{<ddollar@gmail.com>}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".gitignore",
22
- "LICENSE",
23
- "README.rdoc",
24
- "Rakefile",
25
- "VERSION",
26
- "lib/rack/maintenance.rb",
27
- "rack-maintenance.gemspec",
28
- "spec/rack-maintenance_spec.rb",
29
- "spec/spec_helper.rb"
30
- ]
31
- s.homepage = %q{http://github.com/ddollar/rack-maintenance}
32
- s.rdoc_options = ["--charset=UTF-8"]
33
- s.require_paths = ["lib"]
34
- s.rubygems_version = %q{1.3.5}
35
- s.summary = %q{Detect and show a maintenance page}
36
- s.test_files = [
37
- "spec/rack-maintenance_spec.rb",
38
- "spec/spec_helper.rb"
39
- ]
40
-
41
- if s.respond_to? :specification_version then
42
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
43
- s.specification_version = 3
44
-
45
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
46
- s.add_development_dependency(%q<rspec>, [">= 0"])
47
- s.add_development_dependency(%q<yard>, [">= 0"])
48
- s.add_runtime_dependency(%q<rack>, [">= 1.0"])
49
- else
50
- s.add_dependency(%q<rspec>, [">= 0"])
51
- s.add_dependency(%q<yard>, [">= 0"])
52
- s.add_dependency(%q<rack>, [">= 1.0"])
53
- end
54
- else
55
- s.add_dependency(%q<rspec>, [">= 0"])
56
- s.add_dependency(%q<yard>, [">= 0"])
57
- s.add_dependency(%q<rack>, [">= 1.0"])
58
- end
59
- end