heroku-deflater 0.2.0 → 0.3.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.
data/Gemfile CHANGED
@@ -1,5 +1,7 @@
1
1
  source "http://rubygems.org"
2
2
 
3
+ gem 'rack', '>=1.4.2'
4
+
3
5
  group :development do
4
6
  gem "bundler"
5
7
  gem "jeweler"
data/Gemfile.lock CHANGED
@@ -7,7 +7,8 @@ GEM
7
7
  git (>= 1.2.5)
8
8
  rake
9
9
  rdoc
10
- json (1.7.5)
10
+ json (1.7.6)
11
+ rack (1.4.2)
11
12
  rake (10.0.3)
12
13
  rdoc (3.12)
13
14
  json (~> 1.4)
@@ -18,3 +19,4 @@ PLATFORMS
18
19
  DEPENDENCIES
19
20
  bundler
20
21
  jeweler
22
+ rack (>= 1.4.2)
data/README.md CHANGED
@@ -3,8 +3,6 @@
3
3
  A simple rack middleware that enables compressing of your assets and application
4
4
  responses on Heroku, while not wasting CPU cycles on pointlessly gzipping images.
5
5
 
6
- It also bundles the fix for the nasty Rack::Deflater [bug][1].
7
-
8
6
  ## Installing
9
7
 
10
8
  Add to your Gemfile:
@@ -27,4 +25,4 @@ Add to your Gemfile:
27
25
  Copyright (c) 2012 Roman Shterenzon. See LICENSE.txt for
28
26
  further details.
29
27
 
30
- [1]: https://github.com/rack/rack/issues/349
28
+ [1]: https://github.com/rack/rack/issues/349
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "heroku-deflater"
8
- s.version = "0.2.0"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Roman Shterenzon"]
12
- s.date = "2012-12-25"
12
+ s.date = "2013-01-07"
13
13
  s.description = "Deflate assets on heroku"
14
14
  s.email = "romanbsd@yahoo.com"
15
15
  s.extra_rdoc_files = [
@@ -25,7 +25,6 @@ Gem::Specification.new do |s|
25
25
  "VERSION",
26
26
  "heroku-deflater.gemspec",
27
27
  "lib/heroku-deflater.rb",
28
- "lib/heroku-deflater/deflater.rb",
29
28
  "lib/heroku-deflater/railtie.rb",
30
29
  "lib/heroku-deflater/skip_images.rb"
31
30
  ]
@@ -39,13 +38,16 @@ Gem::Specification.new do |s|
39
38
  s.specification_version = 3
40
39
 
41
40
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
41
+ s.add_runtime_dependency(%q<rack>, [">= 1.4.2"])
42
42
  s.add_development_dependency(%q<bundler>, [">= 0"])
43
43
  s.add_development_dependency(%q<jeweler>, [">= 0"])
44
44
  else
45
+ s.add_dependency(%q<rack>, [">= 1.4.2"])
45
46
  s.add_dependency(%q<bundler>, [">= 0"])
46
47
  s.add_dependency(%q<jeweler>, [">= 0"])
47
48
  end
48
49
  else
50
+ s.add_dependency(%q<rack>, [">= 1.4.2"])
49
51
  s.add_dependency(%q<bundler>, [">= 0"])
50
52
  s.add_dependency(%q<jeweler>, [">= 0"])
51
53
  end
@@ -1,5 +1,4 @@
1
1
  require 'rack/deflater'
2
- require 'heroku-deflater/deflater'
3
2
  require 'heroku-deflater/skip_images'
4
3
 
5
4
  module HerokuDeflater
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heroku-deflater
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-25 00:00:00.000000000 Z
12
+ date: 2013-01-07 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rack
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.4.2
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.4.2
14
30
  - !ruby/object:Gem::Dependency
15
31
  name: bundler
16
32
  requirement: !ruby/object:Gem::Requirement
@@ -59,7 +75,6 @@ files:
59
75
  - VERSION
60
76
  - heroku-deflater.gemspec
61
77
  - lib/heroku-deflater.rb
62
- - lib/heroku-deflater/deflater.rb
63
78
  - lib/heroku-deflater/railtie.rb
64
79
  - lib/heroku-deflater/skip_images.rb
65
80
  homepage: http://github.com/romanbsd/heroku-deflater
@@ -77,7 +92,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
77
92
  version: '0'
78
93
  segments:
79
94
  - 0
80
- hash: 1157460233835853722
95
+ hash: 4431948398019269820
81
96
  required_rubygems_version: !ruby/object:Gem::Requirement
82
97
  none: false
83
98
  requirements:
@@ -1,105 +0,0 @@
1
- # Fixes https://github.com/rack/rack/issues/349
2
- require "zlib"
3
- require "stringio"
4
- require "time" # for Time.httpdate
5
- require 'rack/utils'
6
-
7
- module Rack
8
- class Deflater
9
- def initialize(app)
10
- @app = app
11
- end
12
-
13
- def call(env)
14
- status, headers, body = @app.call(env)
15
- headers = Utils::HeaderHash.new(headers)
16
-
17
- # Skip compressing empty entity body responses and responses with
18
- # no-transform set.
19
- if Utils::STATUS_WITH_NO_ENTITY_BODY.include?(status) ||
20
- headers['Cache-Control'].to_s =~ /\bno-transform\b/ ||
21
- (headers['Content-Encoding'] && headers['Content-Encoding'] !~ /\bidentity\b/)
22
- return [status, headers, body]
23
- end
24
-
25
- request = Request.new(env)
26
-
27
- encoding = Utils.select_best_encoding(%w(gzip deflate identity),
28
- request.accept_encoding)
29
-
30
- # Set the Vary HTTP header.
31
- vary = headers["Vary"].to_s.split(",").map { |v| v.strip }
32
- unless vary.include?("*") || vary.include?("Accept-Encoding")
33
- headers["Vary"] = vary.push("Accept-Encoding").join(",")
34
- end
35
-
36
- case encoding
37
- when "gzip"
38
- headers['Content-Encoding'] = "gzip"
39
- headers.delete('Content-Length')
40
- mtime = headers.key?("Last-Modified") ?
41
- Time.httpdate(headers["Last-Modified"]) : Time.now
42
- [status, headers, GzipStream.new(body, mtime)]
43
- when "deflate"
44
- headers['Content-Encoding'] = "deflate"
45
- headers.delete('Content-Length')
46
- [status, headers, DeflateStream.new(body)]
47
- when "identity"
48
- [status, headers, body]
49
- when nil
50
- body.close if body.respond_to?(:close)
51
- message = "An acceptable encoding for the requested resource #{request.fullpath} could not be found."
52
- [406, {"Content-Type" => "text/plain", "Content-Length" => message.length.to_s}, [message]]
53
- end
54
- end
55
-
56
- class GzipStream
57
- def initialize(body, mtime)
58
- @body = body
59
- @mtime = mtime
60
- end
61
-
62
- def each(&block)
63
- @writer = block
64
- gzip =::Zlib::GzipWriter.new(self)
65
- gzip.mtime = @mtime
66
- @body.each { |part|
67
- gzip.write(part)
68
- gzip.flush
69
- }
70
- ensure
71
- @body.close if @body.respond_to?(:close)
72
- gzip.close
73
- @writer = nil
74
- end
75
-
76
- def write(data)
77
- @writer.call(data)
78
- end
79
- end
80
-
81
- class DeflateStream
82
- DEFLATE_ARGS = [
83
- Zlib::DEFAULT_COMPRESSION,
84
- # drop the zlib header which causes both Safari and IE to choke
85
- -Zlib::MAX_WBITS,
86
- Zlib::DEF_MEM_LEVEL,
87
- Zlib::DEFAULT_STRATEGY
88
- ]
89
-
90
- def initialize(body)
91
- @body = body
92
- end
93
-
94
- def each
95
- deflater = ::Zlib::Deflate.new(*DEFLATE_ARGS)
96
- @body.each { |part| yield deflater.deflate(part, Zlib::SYNC_FLUSH) }
97
- yield deflater.finish
98
- nil
99
- ensure
100
- @body.close if @body.respond_to?(:close)
101
- deflater.close
102
- end
103
- end
104
- end
105
- end