unicorn 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,4 @@
1
+ v0.5.3 - fix 100% CPU usage when idle, small cleanups
1
2
  v0.5.2 - force Status: header for compat, small cleanups
2
3
  v0.5.1 - exit correctly on INT/TERM, QUIT is still recommended, however
3
4
  v0.5.0 - {after,before}_fork API change, small tweaks/fixes
data/Manifest CHANGED
@@ -125,5 +125,6 @@ test/unit/test_http_parser.rb
125
125
  test/unit/test_request.rb
126
126
  test/unit/test_response.rb
127
127
  test/unit/test_server.rb
128
+ test/unit/test_signals.rb
128
129
  test/unit/test_socket_helper.rb
129
130
  test/unit/test_upload.rb
data/lib/unicorn.rb CHANGED
@@ -495,7 +495,7 @@ module Unicorn
495
495
  # client closed the socket even before accept
496
496
  client.close rescue nil
497
497
  ensure
498
- tempfile.chmod(nr += 1)
498
+ tempfile.chmod(nr += 1) if client
499
499
  break if nr < 0
500
500
  end
501
501
  end
data/lib/unicorn/const.rb CHANGED
@@ -49,8 +49,6 @@ module Unicorn
49
49
  # gave about a 3% to 10% performance improvement over using the strings directly.
50
50
  # Symbols did not really improve things much compared to constants.
51
51
  module Const
52
- DATE="Date".freeze
53
-
54
52
  # This is the part of the path after the SCRIPT_NAME.
55
53
  PATH_INFO="PATH_INFO".freeze
56
54
 
@@ -58,7 +56,7 @@ module Unicorn
58
56
  REQUEST_URI='REQUEST_URI'.freeze
59
57
  REQUEST_PATH='REQUEST_PATH'.freeze
60
58
 
61
- UNICORN_VERSION="0.5.2".freeze
59
+ UNICORN_VERSION="0.5.3".freeze
62
60
 
63
61
  UNICORN_TMP_BASE="unicorn".freeze
64
62
 
@@ -25,15 +25,13 @@ module Unicorn
25
25
  # Connection: and Date: headers no matter what (if anything) our
26
26
  # Rack application sent us.
27
27
  SKIP = { 'connection' => true, 'date' => true, 'status' => true }.freeze
28
+ HEADER_OUT = [ "Connection: close" ] # :nodoc
28
29
 
29
30
  # writes the rack_response to socket as an HTTP response
30
31
  def self.write(socket, rack_response)
31
32
  status, headers, body = rack_response
32
33
  status = "#{status} #{HTTP_STATUS_CODES[status]}"
33
-
34
- # Date is required by HTTP/1.1 as long as our clock can be trusted.
35
- # Some broken clients require a "Status" header so we accomodate them
36
- out = [ "Date: #{Time.now.httpdate}", "Status: #{status}" ]
34
+ out = HEADER_OUT.dup # shallow copy
37
35
 
38
36
  # Don't bother enforcing duplicate supression, it's a Hash most of
39
37
  # the time anyways so just hope our app knows what it's doing
@@ -48,9 +46,12 @@ module Unicorn
48
46
 
49
47
  # Rack should enforce Content-Length or chunked transfer encoding,
50
48
  # so don't worry or care about them.
49
+ # Date is required by HTTP/1.1 as long as our clock can be trusted.
50
+ # Some broken clients require a "Status" header so we accomodate them
51
51
  socket_write(socket,
52
52
  "HTTP/1.1 #{status}\r\n" \
53
- "Connection: close\r\n" \
53
+ "Date: #{Time.now.httpdate}\r\n" \
54
+ "Status: #{status}\r\n" \
54
55
  "#{out.join("\r\n")}\r\n\r\n")
55
56
  body.each { |chunk| socket_write(socket, chunk) }
56
57
  socket.close # uncorks the socket immediately
data/local.mk.sample CHANGED
@@ -23,9 +23,9 @@ SHELL := /bin/bash -e -o pipefail
23
23
 
24
24
  full-test: test-18 test-19
25
25
  test-18:
26
- $(MAKE) test 2>&1 | sed -u -e 's!^!1.8 !'
26
+ $(MAKE) test test-rails 2>&1 | sed -u -e 's!^!1.8 !'
27
27
  test-19:
28
- $(MAKE) test r19=1 2>&1 | sed -u -e 's!^!1.9 !'
28
+ $(MAKE) test test-rails r19=1 2>&1 | sed -u -e 's!^!1.9 !'
29
29
 
30
30
  # publishes docs to http://unicorn.bogomips.org
31
31
  publish_doc:
@@ -98,12 +98,12 @@ logger Logger.new('#{COMMON_TMP.path}')
98
98
  assert_equal "FOO\n", res.body
99
99
  assert_match %r{^text/html\b}, res['Content-Type']
100
100
  assert_equal "4", res['Content-Length']
101
- assert_nil res['Status']
101
+ assert_equal "200 OK", res['Status']
102
102
 
103
103
  # can we set cookies?
104
104
  res = Net::HTTP.get_response(URI.parse("http://#@addr:#@port/foo/xcookie"))
105
105
  assert_equal "200", res.code
106
- assert_nil res['Status']
106
+ assert_equal "200 OK", res['Status']
107
107
  cookies = res.get_fields('Set-Cookie')
108
108
  assert_equal 2, cookies.size
109
109
  assert_equal 1, cookies.grep(/\A_unicorn_rails_test\./).size
@@ -112,7 +112,7 @@ logger Logger.new('#{COMMON_TMP.path}')
112
112
  # how about just a session?
113
113
  res = Net::HTTP.get_response(URI.parse("http://#@addr:#@port/foo/xnotice"))
114
114
  assert_equal "200", res.code
115
- assert_nil res['Status']
115
+ assert_equal "200 OK", res['Status']
116
116
  cookies = res.get_fields('Set-Cookie')
117
117
  assert_equal 1, cookies.size
118
118
  assert_equal 1, cookies.grep(/\A_unicorn_rails_test\./).size
@@ -128,7 +128,7 @@ logger Logger.new('#{COMMON_TMP.path}')
128
128
  assert_equal Hash, params.class
129
129
  assert_equal 'b', params['a']
130
130
  assert_equal 'd', params['c']
131
- assert_nil res['Status']
131
+ assert_equal "200 OK", res['Status']
132
132
 
133
133
  # try uploading a big file
134
134
  tmp = Tempfile.new('random')
@@ -153,52 +153,52 @@ logger Logger.new('#{COMMON_TMP.path}')
153
153
  assert_equal 1, grepped.size
154
154
  assert_match %r{^text/plain}, grepped.first.split(/\s*:\s*/)[1]
155
155
 
156
- assert_equal 0, resp.grep(/^Status:/i).size # Rack hates "Status: " lines
156
+ assert_equal 1, resp.grep(/^Status:/i).size
157
157
 
158
158
  # make sure we can get 403 responses, too
159
159
  uri = URI.parse("http://#@addr:#@port/foo/xpost")
160
160
  wait_master_ready("test_stderr.#$$.log")
161
161
  res = Net::HTTP.get_response(uri)
162
162
  assert_equal "403", res.code
163
- assert_nil res['Status']
163
+ assert_equal "403 Forbidden", res['Status']
164
164
 
165
165
  # non existent controller
166
166
  uri = URI.parse("http://#@addr:#@port/asdf")
167
167
  res = Net::HTTP.get_response(uri)
168
168
  assert_equal "404", res.code
169
- assert_nil res['Status']
169
+ assert_equal "404 Not Found", res['Status']
170
170
 
171
171
  # static files
172
172
 
173
173
  # ensure file we're about to serve is not there yet
174
174
  res = Net::HTTP.get_response(URI.parse("http://#@addr:#@port/pid.txt"))
175
- assert_nil res['Status']
175
+ assert_equal "404 Not Found", res['Status']
176
176
  assert_equal '404', res.code
177
177
 
178
178
  # can we serve text files based on suffix?
179
179
  File.open("public/pid.txt", "wb") { |fp| fp.syswrite("#$$\n") }
180
180
  res = Net::HTTP.get_response(URI.parse("http://#@addr:#@port/pid.txt"))
181
181
  assert_equal '200', res.code
182
+ assert_equal "200 OK", res['Status']
182
183
  assert_match %r{^text/plain}, res['Content-Type']
183
184
  assert_equal "#$$\n", res.body
184
- assert_nil res['Status']
185
185
 
186
186
  # can we serve HTML files based on suffix?
187
187
  assert File.exist?("public/500.html")
188
188
  res = Net::HTTP.get_response(URI.parse("http://#@addr:#@port/500.html"))
189
189
  assert_equal '200', res.code
190
+ assert_equal '200 OK', res['Status']
190
191
  assert_match %r{^text/html}, res['Content-Type']
191
192
  five_hundred_body = res.body
192
- assert_nil res['Status']
193
193
 
194
194
  # lets try pretending 500 is a controller that got cached
195
195
  assert ! File.exist?("public/500")
196
196
  assert_equal five_hundred_body, File.read("public/500.html")
197
197
  res = Net::HTTP.get_response(URI.parse("http://#@addr:#@port/500"))
198
198
  assert_equal '200', res.code
199
+ assert_equal '200 OK', res['Status']
199
200
  assert_match %r{^text/html}, res['Content-Type']
200
201
  assert_equal five_hundred_body, res.body
201
- assert_nil res['Status']
202
202
  end
203
203
 
204
204
  def test_alt_url_root
@@ -213,14 +213,14 @@ logger Logger.new('#{COMMON_TMP.path}')
213
213
  # p res.body
214
214
  # system 'cat', 'log/development.log'
215
215
  assert_equal "200", res.code
216
+ assert_equal '200 OK', res['Status']
216
217
  assert_equal "FOO\n", res.body
217
218
  assert_match %r{^text/html\b}, res['Content-Type']
218
219
  assert_equal "4", res['Content-Length']
219
- assert_nil res['Status']
220
220
 
221
221
  res = Net::HTTP.get_response(URI.parse("http://#@addr:#@port/foo"))
222
222
  assert_equal "404", res.code
223
- assert_nil res['Status']
223
+ assert_equal '404 Not Found', res['Status']
224
224
  end
225
225
 
226
226
  def teardown
@@ -60,7 +60,7 @@ class ResponseTest < Test::Unit::TestCase
60
60
  out = StringIO.new
61
61
  HttpResponse.write(out,[200, {"X-Whatever" => "stuff"}, []])
62
62
  assert out.closed?
63
- assert_match(/^Status: 200 OK\r\nX-Whatever: stuff\r\n/, out.string)
63
+ assert_equal 1, out.string.split(/\r\n/).grep(/^Status: 200 OK/i).size
64
64
  end
65
65
 
66
66
  # we always favor the code returned by the application, since "Status"
@@ -71,7 +71,7 @@ class ResponseTest < Test::Unit::TestCase
71
71
  header_hash = {"X-Whatever" => "stuff", 'StaTus' => "666" }
72
72
  HttpResponse.write(out,[200, header_hash, []])
73
73
  assert out.closed?
74
- assert_match(/^Status: 200 OK\r\nX-Whatever: stuff\r\n/, out.string)
74
+ assert_equal 1, out.string.split(/\r\n/).grep(/^Status: 200 OK/i).size
75
75
  assert_equal 1, out.string.split(/\r\n/).grep(/^Status:/i).size
76
76
  end
77
77
 
data/unicorn.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{unicorn}
5
- s.version = "0.5.2"
5
+ s.version = "0.5.3"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Eric Wong"]
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.executables = ["unicorn", "unicorn_rails"]
13
13
  s.extensions = ["ext/unicorn/http11/extconf.rb"]
14
14
  s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "TODO", "bin/unicorn", "bin/unicorn_rails", "ext/unicorn/http11/ext_help.h", "ext/unicorn/http11/extconf.rb", "ext/unicorn/http11/http11.c", "ext/unicorn/http11/http11_parser.c", "ext/unicorn/http11/http11_parser.h", "ext/unicorn/http11/http11_parser.rl", "ext/unicorn/http11/http11_parser_common.rl", "lib/unicorn.rb", "lib/unicorn/app/exec_cgi.rb", "lib/unicorn/app/old_rails.rb", "lib/unicorn/app/old_rails/static.rb", "lib/unicorn/cgi_wrapper.rb", "lib/unicorn/configurator.rb", "lib/unicorn/const.rb", "lib/unicorn/http_request.rb", "lib/unicorn/http_response.rb", "lib/unicorn/launcher.rb", "lib/unicorn/socket.rb", "lib/unicorn/util.rb"]
15
- s.files = [".document", ".gitignore", "CHANGELOG", "CONTRIBUTORS", "DESIGN", "GNUmakefile", "LICENSE", "Manifest", "PHILOSOPHY", "README", "Rakefile", "SIGNALS", "TODO", "bin/unicorn", "bin/unicorn_rails", "ext/unicorn/http11/ext_help.h", "ext/unicorn/http11/extconf.rb", "ext/unicorn/http11/http11.c", "ext/unicorn/http11/http11_parser.c", "ext/unicorn/http11/http11_parser.h", "ext/unicorn/http11/http11_parser.rl", "ext/unicorn/http11/http11_parser_common.rl", "lib/unicorn.rb", "lib/unicorn/app/exec_cgi.rb", "lib/unicorn/app/old_rails.rb", "lib/unicorn/app/old_rails/static.rb", "lib/unicorn/cgi_wrapper.rb", "lib/unicorn/configurator.rb", "lib/unicorn/const.rb", "lib/unicorn/http_request.rb", "lib/unicorn/http_response.rb", "lib/unicorn/launcher.rb", "lib/unicorn/socket.rb", "lib/unicorn/util.rb", "local.mk.sample", "setup.rb", "test/aggregate.rb", "test/benchmark/README", "test/benchmark/big_request.rb", "test/benchmark/dd.ru", "test/benchmark/request.rb", "test/benchmark/response.rb", "test/exec/README", "test/exec/test_exec.rb", "test/rails/app-1.2.3/.gitignore", "test/rails/app-1.2.3/Rakefile", "test/rails/app-1.2.3/app/controllers/application.rb", "test/rails/app-1.2.3/app/controllers/foo_controller.rb", "test/rails/app-1.2.3/app/helpers/application_helper.rb", "test/rails/app-1.2.3/config/boot.rb", "test/rails/app-1.2.3/config/database.yml", "test/rails/app-1.2.3/config/environment.rb", "test/rails/app-1.2.3/config/environments/development.rb", "test/rails/app-1.2.3/config/environments/production.rb", "test/rails/app-1.2.3/config/routes.rb", "test/rails/app-1.2.3/db/.gitignore", "test/rails/app-1.2.3/log/.gitignore", "test/rails/app-1.2.3/public/404.html", "test/rails/app-1.2.3/public/500.html", "test/rails/app-2.0.2/.gitignore", "test/rails/app-2.0.2/Rakefile", "test/rails/app-2.0.2/app/controllers/application.rb", "test/rails/app-2.0.2/app/controllers/foo_controller.rb", "test/rails/app-2.0.2/app/helpers/application_helper.rb", "test/rails/app-2.0.2/config/boot.rb", "test/rails/app-2.0.2/config/database.yml", "test/rails/app-2.0.2/config/environment.rb", "test/rails/app-2.0.2/config/environments/development.rb", "test/rails/app-2.0.2/config/environments/production.rb", "test/rails/app-2.0.2/config/routes.rb", "test/rails/app-2.0.2/db/.gitignore", "test/rails/app-2.0.2/log/.gitignore", "test/rails/app-2.0.2/public/404.html", "test/rails/app-2.0.2/public/500.html", "test/rails/app-2.1.2/.gitignore", "test/rails/app-2.1.2/Rakefile", "test/rails/app-2.1.2/app/controllers/application.rb", "test/rails/app-2.1.2/app/controllers/foo_controller.rb", "test/rails/app-2.1.2/app/helpers/application_helper.rb", "test/rails/app-2.1.2/config/boot.rb", "test/rails/app-2.1.2/config/database.yml", "test/rails/app-2.1.2/config/environment.rb", "test/rails/app-2.1.2/config/environments/development.rb", "test/rails/app-2.1.2/config/environments/production.rb", "test/rails/app-2.1.2/config/routes.rb", "test/rails/app-2.1.2/db/.gitignore", "test/rails/app-2.1.2/log/.gitignore", "test/rails/app-2.1.2/public/404.html", "test/rails/app-2.1.2/public/500.html", "test/rails/app-2.2.2/.gitignore", "test/rails/app-2.2.2/Rakefile", "test/rails/app-2.2.2/app/controllers/application.rb", "test/rails/app-2.2.2/app/controllers/foo_controller.rb", "test/rails/app-2.2.2/app/helpers/application_helper.rb", "test/rails/app-2.2.2/config/boot.rb", "test/rails/app-2.2.2/config/database.yml", "test/rails/app-2.2.2/config/environment.rb", "test/rails/app-2.2.2/config/environments/development.rb", "test/rails/app-2.2.2/config/environments/production.rb", "test/rails/app-2.2.2/config/routes.rb", "test/rails/app-2.2.2/db/.gitignore", "test/rails/app-2.2.2/log/.gitignore", "test/rails/app-2.2.2/public/404.html", "test/rails/app-2.2.2/public/500.html", "test/rails/app-2.3.2.1/.gitignore", "test/rails/app-2.3.2.1/Rakefile", "test/rails/app-2.3.2.1/app/controllers/application_controller.rb", "test/rails/app-2.3.2.1/app/controllers/foo_controller.rb", "test/rails/app-2.3.2.1/app/helpers/application_helper.rb", "test/rails/app-2.3.2.1/config/boot.rb", "test/rails/app-2.3.2.1/config/database.yml", "test/rails/app-2.3.2.1/config/environment.rb", "test/rails/app-2.3.2.1/config/environments/development.rb", "test/rails/app-2.3.2.1/config/environments/production.rb", "test/rails/app-2.3.2.1/config/routes.rb", "test/rails/app-2.3.2.1/db/.gitignore", "test/rails/app-2.3.2.1/log/.gitignore", "test/rails/app-2.3.2.1/public/404.html", "test/rails/app-2.3.2.1/public/500.html", "test/rails/test_rails.rb", "test/test_helper.rb", "test/tools/trickletest.rb", "test/unit/test_configurator.rb", "test/unit/test_http_parser.rb", "test/unit/test_request.rb", "test/unit/test_response.rb", "test/unit/test_server.rb", "test/unit/test_socket_helper.rb", "test/unit/test_upload.rb", "unicorn.gemspec", "test/unit/test_signals.rb"]
15
+ s.files = [".document", ".gitignore", "CHANGELOG", "CONTRIBUTORS", "DESIGN", "GNUmakefile", "LICENSE", "Manifest", "PHILOSOPHY", "README", "Rakefile", "SIGNALS", "TODO", "bin/unicorn", "bin/unicorn_rails", "ext/unicorn/http11/ext_help.h", "ext/unicorn/http11/extconf.rb", "ext/unicorn/http11/http11.c", "ext/unicorn/http11/http11_parser.c", "ext/unicorn/http11/http11_parser.h", "ext/unicorn/http11/http11_parser.rl", "ext/unicorn/http11/http11_parser_common.rl", "lib/unicorn.rb", "lib/unicorn/app/exec_cgi.rb", "lib/unicorn/app/old_rails.rb", "lib/unicorn/app/old_rails/static.rb", "lib/unicorn/cgi_wrapper.rb", "lib/unicorn/configurator.rb", "lib/unicorn/const.rb", "lib/unicorn/http_request.rb", "lib/unicorn/http_response.rb", "lib/unicorn/launcher.rb", "lib/unicorn/socket.rb", "lib/unicorn/util.rb", "local.mk.sample", "setup.rb", "test/aggregate.rb", "test/benchmark/README", "test/benchmark/big_request.rb", "test/benchmark/dd.ru", "test/benchmark/request.rb", "test/benchmark/response.rb", "test/exec/README", "test/exec/test_exec.rb", "test/rails/app-1.2.3/.gitignore", "test/rails/app-1.2.3/Rakefile", "test/rails/app-1.2.3/app/controllers/application.rb", "test/rails/app-1.2.3/app/controllers/foo_controller.rb", "test/rails/app-1.2.3/app/helpers/application_helper.rb", "test/rails/app-1.2.3/config/boot.rb", "test/rails/app-1.2.3/config/database.yml", "test/rails/app-1.2.3/config/environment.rb", "test/rails/app-1.2.3/config/environments/development.rb", "test/rails/app-1.2.3/config/environments/production.rb", "test/rails/app-1.2.3/config/routes.rb", "test/rails/app-1.2.3/db/.gitignore", "test/rails/app-1.2.3/log/.gitignore", "test/rails/app-1.2.3/public/404.html", "test/rails/app-1.2.3/public/500.html", "test/rails/app-2.0.2/.gitignore", "test/rails/app-2.0.2/Rakefile", "test/rails/app-2.0.2/app/controllers/application.rb", "test/rails/app-2.0.2/app/controllers/foo_controller.rb", "test/rails/app-2.0.2/app/helpers/application_helper.rb", "test/rails/app-2.0.2/config/boot.rb", "test/rails/app-2.0.2/config/database.yml", "test/rails/app-2.0.2/config/environment.rb", "test/rails/app-2.0.2/config/environments/development.rb", "test/rails/app-2.0.2/config/environments/production.rb", "test/rails/app-2.0.2/config/routes.rb", "test/rails/app-2.0.2/db/.gitignore", "test/rails/app-2.0.2/log/.gitignore", "test/rails/app-2.0.2/public/404.html", "test/rails/app-2.0.2/public/500.html", "test/rails/app-2.1.2/.gitignore", "test/rails/app-2.1.2/Rakefile", "test/rails/app-2.1.2/app/controllers/application.rb", "test/rails/app-2.1.2/app/controllers/foo_controller.rb", "test/rails/app-2.1.2/app/helpers/application_helper.rb", "test/rails/app-2.1.2/config/boot.rb", "test/rails/app-2.1.2/config/database.yml", "test/rails/app-2.1.2/config/environment.rb", "test/rails/app-2.1.2/config/environments/development.rb", "test/rails/app-2.1.2/config/environments/production.rb", "test/rails/app-2.1.2/config/routes.rb", "test/rails/app-2.1.2/db/.gitignore", "test/rails/app-2.1.2/log/.gitignore", "test/rails/app-2.1.2/public/404.html", "test/rails/app-2.1.2/public/500.html", "test/rails/app-2.2.2/.gitignore", "test/rails/app-2.2.2/Rakefile", "test/rails/app-2.2.2/app/controllers/application.rb", "test/rails/app-2.2.2/app/controllers/foo_controller.rb", "test/rails/app-2.2.2/app/helpers/application_helper.rb", "test/rails/app-2.2.2/config/boot.rb", "test/rails/app-2.2.2/config/database.yml", "test/rails/app-2.2.2/config/environment.rb", "test/rails/app-2.2.2/config/environments/development.rb", "test/rails/app-2.2.2/config/environments/production.rb", "test/rails/app-2.2.2/config/routes.rb", "test/rails/app-2.2.2/db/.gitignore", "test/rails/app-2.2.2/log/.gitignore", "test/rails/app-2.2.2/public/404.html", "test/rails/app-2.2.2/public/500.html", "test/rails/app-2.3.2.1/.gitignore", "test/rails/app-2.3.2.1/Rakefile", "test/rails/app-2.3.2.1/app/controllers/application_controller.rb", "test/rails/app-2.3.2.1/app/controllers/foo_controller.rb", "test/rails/app-2.3.2.1/app/helpers/application_helper.rb", "test/rails/app-2.3.2.1/config/boot.rb", "test/rails/app-2.3.2.1/config/database.yml", "test/rails/app-2.3.2.1/config/environment.rb", "test/rails/app-2.3.2.1/config/environments/development.rb", "test/rails/app-2.3.2.1/config/environments/production.rb", "test/rails/app-2.3.2.1/config/routes.rb", "test/rails/app-2.3.2.1/db/.gitignore", "test/rails/app-2.3.2.1/log/.gitignore", "test/rails/app-2.3.2.1/public/404.html", "test/rails/app-2.3.2.1/public/500.html", "test/rails/test_rails.rb", "test/test_helper.rb", "test/tools/trickletest.rb", "test/unit/test_configurator.rb", "test/unit/test_http_parser.rb", "test/unit/test_request.rb", "test/unit/test_response.rb", "test/unit/test_server.rb", "test/unit/test_signals.rb", "test/unit/test_socket_helper.rb", "test/unit/test_upload.rb", "unicorn.gemspec"]
16
16
  s.has_rdoc = true
17
17
  s.homepage = %q{http://unicorn.bogomips.org}
18
18
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Unicorn", "--main", "README"]
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.rubyforge_project = %q{unicorn}
21
21
  s.rubygems_version = %q{1.3.1}
22
22
  s.summary = %q{A small fast HTTP library and server for Rack applications.}
23
- s.test_files = ["test/unit/test_configurator.rb", "test/unit/test_response.rb", "test/unit/test_request.rb", "test/unit/test_signals.rb", "test/unit/test_upload.rb", "test/unit/test_http_parser.rb", "test/unit/test_socket_helper.rb", "test/unit/test_server.rb"]
23
+ s.test_files = ["test/unit/test_request.rb", "test/unit/test_http_parser.rb", "test/unit/test_server.rb", "test/unit/test_response.rb", "test/unit/test_configurator.rb", "test/unit/test_upload.rb", "test/unit/test_signals.rb", "test/unit/test_socket_helper.rb"]
24
24
 
25
25
  if s.respond_to? :specification_version then
26
26
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unicorn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Wong
@@ -174,6 +174,7 @@ files:
174
174
  - test/unit/test_request.rb
175
175
  - test/unit/test_response.rb
176
176
  - test/unit/test_server.rb
177
+ - test/unit/test_signals.rb
177
178
  - test/unit/test_socket_helper.rb
178
179
  - test/unit/test_upload.rb
179
180
  - unicorn.gemspec
@@ -210,11 +211,11 @@ signing_key:
210
211
  specification_version: 2
211
212
  summary: A small fast HTTP library and server for Rack applications.
212
213
  test_files:
213
- - test/unit/test_configurator.rb
214
- - test/unit/test_response.rb
215
214
  - test/unit/test_request.rb
216
- - test/unit/test_signals.rb
217
- - test/unit/test_upload.rb
218
215
  - test/unit/test_http_parser.rb
219
- - test/unit/test_socket_helper.rb
220
216
  - test/unit/test_server.rb
217
+ - test/unit/test_response.rb
218
+ - test/unit/test_configurator.rb
219
+ - test/unit/test_upload.rb
220
+ - test/unit/test_signals.rb
221
+ - test/unit/test_socket_helper.rb