heroku-deflater 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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