wendell-puma 2.9.2

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.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/COPYING +55 -0
  3. data/DEPLOYMENT.md +92 -0
  4. data/Gemfile +17 -0
  5. data/History.txt +588 -0
  6. data/LICENSE +26 -0
  7. data/Manifest.txt +68 -0
  8. data/README.md +251 -0
  9. data/Rakefile +158 -0
  10. data/bin/puma +10 -0
  11. data/bin/puma-wild +31 -0
  12. data/bin/pumactl +12 -0
  13. data/docs/config.md +0 -0
  14. data/docs/nginx.md +80 -0
  15. data/docs/signals.md +43 -0
  16. data/ext/puma_http11/PumaHttp11Service.java +17 -0
  17. data/ext/puma_http11/ext_help.h +15 -0
  18. data/ext/puma_http11/extconf.rb +9 -0
  19. data/ext/puma_http11/http11_parser.c +1225 -0
  20. data/ext/puma_http11/http11_parser.h +64 -0
  21. data/ext/puma_http11/http11_parser.java.rl +161 -0
  22. data/ext/puma_http11/http11_parser.rl +146 -0
  23. data/ext/puma_http11/http11_parser_common.rl +54 -0
  24. data/ext/puma_http11/io_buffer.c +155 -0
  25. data/ext/puma_http11/mini_ssl.c +198 -0
  26. data/ext/puma_http11/org/jruby/puma/Http11.java +225 -0
  27. data/ext/puma_http11/org/jruby/puma/Http11Parser.java +488 -0
  28. data/ext/puma_http11/org/jruby/puma/MiniSSL.java +391 -0
  29. data/ext/puma_http11/puma_http11.c +491 -0
  30. data/lib/puma.rb +14 -0
  31. data/lib/puma/accept_nonblock.rb +23 -0
  32. data/lib/puma/app/status.rb +59 -0
  33. data/lib/puma/binder.rb +298 -0
  34. data/lib/puma/capistrano.rb +86 -0
  35. data/lib/puma/cli.rb +606 -0
  36. data/lib/puma/client.rb +289 -0
  37. data/lib/puma/cluster.rb +404 -0
  38. data/lib/puma/compat.rb +18 -0
  39. data/lib/puma/configuration.rb +377 -0
  40. data/lib/puma/const.rb +165 -0
  41. data/lib/puma/control_cli.rb +251 -0
  42. data/lib/puma/daemon_ext.rb +25 -0
  43. data/lib/puma/delegation.rb +11 -0
  44. data/lib/puma/detect.rb +4 -0
  45. data/lib/puma/events.rb +130 -0
  46. data/lib/puma/io_buffer.rb +7 -0
  47. data/lib/puma/java_io_buffer.rb +45 -0
  48. data/lib/puma/jruby_restart.rb +83 -0
  49. data/lib/puma/minissl.rb +187 -0
  50. data/lib/puma/null_io.rb +34 -0
  51. data/lib/puma/rack_default.rb +7 -0
  52. data/lib/puma/rack_patch.rb +45 -0
  53. data/lib/puma/reactor.rb +183 -0
  54. data/lib/puma/runner.rb +146 -0
  55. data/lib/puma/server.rb +801 -0
  56. data/lib/puma/single.rb +102 -0
  57. data/lib/puma/tcp_logger.rb +32 -0
  58. data/lib/puma/thread_pool.rb +185 -0
  59. data/lib/puma/util.rb +9 -0
  60. data/lib/rack/handler/puma.rb +66 -0
  61. data/test/test_app_status.rb +92 -0
  62. data/test/test_cli.rb +173 -0
  63. data/test/test_config.rb +26 -0
  64. data/test/test_http10.rb +27 -0
  65. data/test/test_http11.rb +144 -0
  66. data/test/test_integration.rb +165 -0
  67. data/test/test_iobuffer.rb +38 -0
  68. data/test/test_minissl.rb +29 -0
  69. data/test/test_null_io.rb +31 -0
  70. data/test/test_persistent.rb +238 -0
  71. data/test/test_puma_server.rb +288 -0
  72. data/test/test_puma_server_ssl.rb +137 -0
  73. data/test/test_rack_handler.rb +10 -0
  74. data/test/test_rack_server.rb +141 -0
  75. data/test/test_tcp_rack.rb +42 -0
  76. data/test/test_thread_pool.rb +156 -0
  77. data/test/test_unix_socket.rb +39 -0
  78. data/test/test_ws.rb +89 -0
  79. data/tools/jungle/README.md +9 -0
  80. data/tools/jungle/init.d/README.md +54 -0
  81. data/tools/jungle/init.d/puma +332 -0
  82. data/tools/jungle/init.d/run-puma +3 -0
  83. data/tools/jungle/upstart/README.md +61 -0
  84. data/tools/jungle/upstart/puma-manager.conf +31 -0
  85. data/tools/jungle/upstart/puma.conf +63 -0
  86. data/tools/trickletest.rb +45 -0
  87. data/wendell-puma.gemspec +55 -0
  88. metadata +225 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 128d9e5b739839b37007cb13462c04eaaf6c7c22
4
+ data.tar.gz: 639592550765721470254b870c79e84b08a3c59e
5
+ SHA512:
6
+ metadata.gz: b01acb0320f82eb83ffe2a766929c14b6315390c1a585d847d2c7190b9bf3baef9015fc3f49c86b8597a873c8341b1b0a5c7f779fc71224cfa5abe3d70bdbd6d
7
+ data.tar.gz: 420a7c6a3750332c62c6831bf28c35c6d7fb171c8effe8f314cb78fd53d0b960c33eb67dd2c7007a775dfd989fe55cec18a7fd39bec5248618e3a840f89bdc2b
data/COPYING ADDED
@@ -0,0 +1,55 @@
1
+ Mongrel Web Server (Mongrel) is copyrighted free software by Zed A. Shaw
2
+ <zedshaw at zedshaw dot com> You can redistribute it and/or modify it under
3
+ either the terms of the GPL or the conditions below:
4
+
5
+ 1. You may make and give away verbatim copies of the source form of the
6
+ software without restriction, provided that you duplicate all of the
7
+ original copyright notices and associated disclaimers.
8
+
9
+ 2. You may modify your copy of the software in any way, provided that
10
+ you do at least ONE of the following:
11
+
12
+ a) place your modifications in the Public Domain or otherwise make them
13
+ Freely Available, such as by posting said modifications to Usenet or an
14
+ equivalent medium, or by allowing the author to include your
15
+ modifications in the software.
16
+
17
+ b) use the modified software only within your corporation or
18
+ organization.
19
+
20
+ c) rename any non-standard executables so the names do not conflict with
21
+ standard executables, which must also be provided.
22
+
23
+ d) make other distribution arrangements with the author.
24
+
25
+ 3. You may distribute the software in object code or executable
26
+ form, provided that you do at least ONE of the following:
27
+
28
+ a) distribute the executables and library files of the software,
29
+ together with instructions (in the manual page or equivalent) on where
30
+ to get the original distribution.
31
+
32
+ b) accompany the distribution with the machine-readable source of the
33
+ software.
34
+
35
+ c) give non-standard executables non-standard names, with
36
+ instructions on where to get the original software distribution.
37
+
38
+ d) make other distribution arrangements with the author.
39
+
40
+ 4. You may modify and include the part of the software into any other
41
+ software (possibly commercial). But some files in the distribution
42
+ are not written by the author, so that they are not under this terms.
43
+
44
+ 5. The scripts and library files supplied as input to or produced as
45
+ output from the software do not automatically fall under the
46
+ copyright of the software, but belong to whomever generated them,
47
+ and may be sold commercially, and may be aggregated with this
48
+ software.
49
+
50
+ 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
51
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
52
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
53
+ PURPOSE.
54
+
55
+
@@ -0,0 +1,92 @@
1
+ # Deployment engineering for puma
2
+
3
+ Puma is software that is expected to be run in a deployed environment eventually.
4
+ You can centainly use it as your dev server only, but most people look to use
5
+ it in their production deployments as well.
6
+
7
+ To that end, this is meant to serve as a foundation of wisdom how to do that
8
+ in a way that increases happiness and decreases downtime.
9
+
10
+ ## Specifying puma
11
+
12
+ Most people want to do this by putting `gem "puma"` into their Gemfile, so we'll
13
+ go ahead and assume that. Go add it now... we'll wait.
14
+
15
+
16
+ Welcome back!
17
+
18
+ ## Single vs Cluster mode
19
+
20
+ Puma was originally concieved as a thread-only webserver, but grew the ability to
21
+ also use processes in version 2.
22
+
23
+ Here are some rules of thumb:
24
+
25
+ ### MRI
26
+
27
+ * Use cluster mode and set the number of workers to 1.5x the number of cpu cores
28
+ in the machine, minimum 2.
29
+ * Set the number of threads to desired concurrent requests / number of workers.
30
+ Puma defaults to 8 and thats a decent number.
31
+
32
+ #### Migrating from Unicorn
33
+
34
+ * If you're migrating from unicorn though, here are some settings to start with:
35
+ * Set workers to half the number of unicorn workers you're using
36
+ * Set threads to 2
37
+ * Enjoy 50% memory savings
38
+ * As you grow more confident in the thread safety of your app, you can tune the
39
+ workers down and the threads up.
40
+
41
+ #### Worker utilization
42
+
43
+ **How do you know if you're got enough (or too many workers)?**
44
+
45
+ A good question. Due to MRI's GIL, only one thread can be executing Ruby code at a time.
46
+ But since so many apps are waiting on IO from DBs, etc., they can utilize threads
47
+ to make better use of the process.
48
+
49
+ The rule of thumb is you never want processes that are pegged all the time. This
50
+ means that there is more work to do that the process can get through. On the other
51
+ hand, if you have processes that sit around doing nothing, then they're just eating
52
+ up resources.
53
+
54
+ Watching your CPU utilization over time and aim for about 70% on average. This means
55
+ you've got capacity still but aren't starving threads.
56
+
57
+ ## Daemonizing
58
+
59
+ I prefer to not daemonize my servers and use something like `runit` or `upstart` to
60
+ monitor them as child processes. This gives them fast response to crashes and
61
+ makes it easy to figure out what is going on. Additionally, unlike `unicorn`,
62
+ puma does not require daemonization to do zero-downtime restarts.
63
+
64
+ I see people using daemonization because they start puma directly via capistrano
65
+ task and thus want it to live on past the `cap deploy`. To this people I said:
66
+ You need to be using a process monitor. Nothing is making sure puma stays up in
67
+ this scenario! You're just waiting for something weird to happen, puma to die,
68
+ and to get paged at 3am. Do yourself a favor, at least the process monitoring
69
+ your OS comes with, be it `sysvinit`, `upstart`, or `systemd`. Or branch out
70
+ and use `runit` or hell, even `monit`.
71
+
72
+ ## Restarting
73
+
74
+ You probably will want to deploy some new code at some point, and you'd like
75
+ puma to start running that new code. Minimizing the amount of time the server
76
+ is unavailable would be nice as well. Here's how to do it:
77
+
78
+ 1. Don't use `preload!`. This dirties the master process and means it will have
79
+ to shutdown all the workers and re-exec itself to get your new code, which means
80
+ much higher waiting around for things to load.
81
+
82
+ 1. Use `prune_bundler`. This makes it so that the cluster master will detach itself
83
+ from a Bundler context on start. This allows the cluster workers to load your app
84
+ and start a brand new Bundler context within the worker only. This means your
85
+ master remains pristine and can live on between new releases of your code.
86
+
87
+ 1. Use phased-restart (`SIGUSR1` or `pumactl phased-restart`). This tells the master
88
+ to kill off one worker at a time and restart them in your new code. This minimizes
89
+ downtime and staggers the restart nicely. **WARNING** This means that both your
90
+ old code and your new code will be running concurrently. Most deployment solutions
91
+ already cause that, but it's worth warning you about it again. Be careful with your
92
+ migrations, etc!
data/Gemfile ADDED
@@ -0,0 +1,17 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "hoe"
4
+ gem "hoe-git"
5
+ gem "hoe-ignore"
6
+ gem "rdoc"
7
+ gem "rake-compiler"
8
+ gem "rack"
9
+
10
+ gem 'minitest', '~> 4.0'
11
+
12
+ gem "jruby-openssl", :platform => "jruby"
13
+
14
+ platforms :rbx do
15
+ gem 'rubysl', '~> 2.0'
16
+ end
17
+
@@ -0,0 +1,588 @@
1
+ === 2.9.2 / 1024-10-25
2
+
3
+ * 8 bug fixes:
4
+ * Fix puma-wild handling a restart properly. Fixes #550
5
+ * JRuby SSL POODLE update
6
+ * Keep deprecated features warnings
7
+ * Log the current time when Puma shuts down.
8
+ * Fix cross-platform extension library detection
9
+ * Use the correct Windows names for OpenSSL.
10
+ * Better error logging during startup
11
+ * Fixing sexist error messages
12
+
13
+ * 6 PRs merged:
14
+ * Merge pull request #549 from bsnape/log-shutdown-time
15
+ * Merge pull request #553 from lowjoel/master
16
+ * Merge pull request #568 from mariuz/patch-1
17
+ * Merge pull request #578 from danielbuechele/patch-1
18
+ * Merge pull request #581 from alexch/slightly-better-logging
19
+ * Merge pull request #590 from looker/jruby_disable_sslv3
20
+
21
+ === 2.9.1 / 2014-09-05
22
+
23
+ * 4 bug fixes:
24
+ * Cleanup the SSL related structures properly, fixes memory leak
25
+ * Fix thread spawning edge case.
26
+ * Force a worker check after a worker boots, don't wait 5sec. Fixes #574
27
+ * Implement SIGHUP for logs reopening
28
+
29
+ * 2 PRs merged:
30
+ * Merge pull request #561 from theoldreader/sighup
31
+ * Merge pull request #570 from havenwood/spawn-thread-edge-case
32
+
33
+ === 2.9.0 / 2014-07-12
34
+
35
+ * 1 minor feature:
36
+ * Add SSL support for JRuby
37
+
38
+ * 3 bug fixes:
39
+ * Typo BUNDLER_GEMFILE -> BUNDLE_GEMFILE
40
+ * Use fast_write because we can't trust syswrite
41
+ * pumactl - do not modify original ARGV
42
+
43
+ * 4 doc fixes:
44
+ * BSD-3-Clause over BSD to avoid confusion
45
+ * Deploy doc: clarification of the GIL
46
+ * Fix typo in DEPLOYMENT.md
47
+ * Update README.md
48
+
49
+ * 6 PRs merged:
50
+ * Merge pull request #520 from misfo/patch-2
51
+ * Merge pull request #530 from looker/jruby-ssl
52
+ * Merge pull request #537 from vlmonk/patch-1
53
+ * Merge pull request #540 from allaire/patch-1
54
+ * Merge pull request #544 from chulkilee/bsd-3-clause
55
+ * Merge pull request #551 from jcxplorer/patch-1
56
+
57
+ === 2.8.2 / 2014-04-12
58
+
59
+ * 4 bug fixes:
60
+ * During upgrade, change directory in main process instead of workers.
61
+ * Close the client properly on error
62
+ * Capistrano: fallback from phased restart to start when not started
63
+ * Allow tag option in conf file
64
+
65
+ * 4 doc fixes:
66
+ * Fix Puma daemon service README typo
67
+ * `preload_app!` instead of `preload_app`
68
+ * add preload_app and prune_bundler to example config
69
+ * allow changing of worker_timeout in config file
70
+
71
+ * 11 PRs merged:
72
+ * Merge pull request #487 from ckuttruff/master
73
+ * Merge pull request #492 from ckuttruff/master
74
+ * Merge pull request #493 from alepore/config_tag
75
+ * Merge pull request #503 from mariuz/patch-1
76
+ * Merge pull request #505 from sammcj/patch-1
77
+ * Merge pull request #506 from FlavourSys/config_worker_timeout
78
+ * Merge pull request #510 from momer/rescue-block-handle-servers-fix
79
+ * Merge pull request #511 from macool/patch-1
80
+ * Merge pull request #514 from edogawaconan/refactor_env
81
+ * Merge pull request #517 from misfo/patch-1
82
+ * Merge pull request #518 from LongMan/master
83
+
84
+ === 2.8.1 / 2014-03-06
85
+
86
+ * 1 bug fixes:
87
+ * Run puma-wild with proper deps for prune_bundler
88
+
89
+ * 2 doc changes:
90
+ * Described the configuration file finding behavior added in 2.8.0 and how to disable it.
91
+ * Start the deployment doc
92
+
93
+ * 6 PRs merged:
94
+ * Merge pull request #471 from arthurnn/fix_test
95
+ * Merge pull request #485 from joneslee85/patch-9
96
+ * Merge pull request #486 from joshwlewis/patch-1
97
+ * Merge pull request #490 from tobinibot/patch-1
98
+ * Merge pull request #491 from brianknight10/clarify-no-config
99
+
100
+ === 2.8.0 / 2014-02-28
101
+
102
+ * 8 minor features:
103
+ * Add ability to autoload a config file. Fixes #438
104
+ * Add ability to detect and terminate hung workers. Fixes #333
105
+ * Add booted_workers to stats response
106
+ * Add config to customize the default error message
107
+ * Add prune_bundler option
108
+ * Add worker indexes, expose them via on_worker_boot. Fixes #440
109
+ * Add pretty process name
110
+ * Show the ruby version in use
111
+
112
+ * 7 bug fixes:
113
+ * Added 408 status on timeout.
114
+ * Be more hostile with sockets that write block. Fixes #449
115
+ * Expect at_exit to exclusively remove the pidfile. Fixes #444
116
+ * Expose latency and listen backlog via bind query. Fixes #370
117
+ * JRuby raises IOError if the socket is there. Fixes #377
118
+ * Process requests fairly. Fixes #406
119
+ * Rescue SystemCallError as well. Fixes #425
120
+
121
+ * 4 doc changes:
122
+ * Add 2.1.0 to the matrix
123
+ * Add Code Climate badge to README
124
+ * Create signals.md
125
+ * Set the license to BSD. Fixes #432
126
+
127
+ * 14 PRs merged:
128
+ * Merge pull request #428 from alexeyfrank/capistrano_default_hooks
129
+ * Merge pull request #429 from namusyaka/revert-const_defined
130
+ * Merge pull request #431 from mrb/master
131
+ * Merge pull request #433 from alepore/process-name
132
+ * Merge pull request #437 from ibrahima/master
133
+ * Merge pull request #446 from sudara/master
134
+ * Merge pull request #451 from pwiebe/status_408
135
+ * Merge pull request #453 from joevandyk/patch-1
136
+ * Merge pull request #470 from arthurnn/fix_458
137
+ * Merge pull request #472 from rubencaro/master
138
+ * Merge pull request #480 from jjb/docs-on-running-test-suite
139
+ * Merge pull request #481 from schneems/master
140
+ * Merge pull request #482 from prathamesh-sonpatki/signals-doc-cleanup
141
+ * Merge pull request #483 from YotpoLtd/master
142
+
143
+ === 2.7.1 / 2013-12-05
144
+
145
+ * 1 bug fix:
146
+
147
+ * Keep STDOUT/STDERR the right mode. Fixes #422
148
+
149
+ === 2.7.0 / 2013-12-03
150
+
151
+ * 1 minor feature:
152
+ * Adding TTIN and TTOU to increment/decrement workers
153
+
154
+ * N bug fixes:
155
+ * Always use our Process.daemon because it's not busted
156
+ * Add capistrano restart failback to start.
157
+ * Change position of `cd` so that rvm gemset is loaded
158
+ * Clarify some platform specifics
159
+ * Do not close the pipe sockets when retrying
160
+ * Fix String#byteslice for Ruby 1.9.1, 1.9.2
161
+ * Fix compatibility with 1.8.7.
162
+ * Handle IOError closed stream in IO.select
163
+ * Increase the max URI path length to 2048 chars from 1024 chars
164
+ * Upstart jungle use config/puma.rb instead
165
+
166
+ === 2.6.0 / 2013-09-13
167
+
168
+ * 2 minor features:
169
+ * Add support for event hooks
170
+ ** Add a hook for state transitions
171
+ * Add phased restart to capistrano recipe.
172
+
173
+ * 4 bug fixes:
174
+ * Convince workers to stop by SIGKILL after timeout
175
+ * Define RSTRING_NOT_MODIFIED for Rubinius performance
176
+ * Handle BrokenPipe, StandardError and IOError in fat_wrote and break out
177
+ * Return success status to the invoking environment
178
+
179
+ === 2.5.1 / 2013-08-13
180
+
181
+ * 2 bug fixes:
182
+
183
+ * Keep jruby daemon mode from retrying on a hot restart
184
+ * Extract version from const.rb in gemspec
185
+
186
+ === 2.5.0 / 2013-08-08
187
+
188
+ * 2 minor features:
189
+ * Allow configuring pumactl with config.rb
190
+ * make `pumactl restart` start puma if not running
191
+
192
+ * 6 bug fixes:
193
+ * Autodetect ruby managers and home directory in upstart script
194
+ * Convert header values to string before sending.
195
+ * Correctly report phased-restart availability
196
+ * Fix pidfile creation/deletion race on jruby daemonization
197
+ * Use integers when comparing thread counts
198
+ * Fix typo in using lopez express (raw tcp) mode
199
+
200
+ * 6 misc changes:
201
+ * Fix typo in phased-restart response
202
+ * Uncomment setuid/setgid by default in upstart
203
+ * Use Puma::Const::PUMA_VERSION in gemspec
204
+ * Update upstart comments to reflect new commandline
205
+ * Remove obsolete pumactl instructions; refer to pumactl for details
206
+ * Make Bundler used puma.gemspec version agnostic
207
+
208
+ === 2.4.1 / 2013-08-07
209
+
210
+ * 1 experimental feature:
211
+ * Support raw tcp servers (aka Lopez Express mode)
212
+
213
+ === 2.4.0 / 2013-07-22
214
+
215
+ * 5 minor features:
216
+ * Add PUMA_JRUBY_DAEMON_OPTS to get around agent starting twice
217
+ * Add ability to drain accept socket on shutdown
218
+ * Add port to DSL
219
+ * Adds support for using puma config file in capistrano deploys.
220
+ * Make phased_restart fallback to restart if not available
221
+
222
+ * 10 bug fixes:
223
+
224
+ * Be sure to only delete the pid in the master. Fixes #334
225
+ * Call out -C/--config flags
226
+ * Change parser symbol names to avoid clash. Fixes #179
227
+ * Convert thread pool sizes to integers
228
+ * Detect when the jruby daemon child doesn't start properly
229
+ * Fix typo in CLI help
230
+ * Improve the logging output when hijack is used. Fixes #332
231
+ * Remove unnecessary thread pool size conversions
232
+ * Setup :worker_boot as an Array. Fixes #317
233
+ * Use 127.0.0.1 as REMOTE_ADDR of unix client. Fixes #309
234
+
235
+
236
+ === 2.3.2 / 2013-07-08
237
+
238
+ * 1 bug fix:
239
+
240
+ * Move starting control server to after daemonization.
241
+
242
+ === 2.3.1 / 2013-07-06
243
+
244
+ * 2 bug fixes:
245
+
246
+ * Include the right files in the Manifest.
247
+ * Disable inheriting connections on restart on windows. Fixes #166
248
+
249
+ * 1 doc change:
250
+ * Better document some platform constraints
251
+
252
+ === 2.3.0 / 2013-07-05
253
+
254
+ * 1 major bug fix:
255
+
256
+ * Stabilize control server, add support in cluster mode
257
+
258
+ * 5 minor bug fixes:
259
+
260
+ * Add ability to cleanup stale unix sockets
261
+ * Check status data better. Fixes #292
262
+ * Convert raw IO errors to ConnectionError. Fixes #274
263
+ * Fix sending Content-Type and Content-Length for no body status. Fixes #304
264
+ * Pass state path through to `pumactl start`. Fixes #287
265
+
266
+ * 2 internal changes:
267
+
268
+ * Refactored modes into seperate classes that CLI uses
269
+ * Changed CLI to take an Events object instead of stdout/stderr (API change)
270
+
271
+ === 2.2.2 / 2013-07-02
272
+
273
+ * 1 bug fix:
274
+
275
+ * Fix restart_command in the config
276
+
277
+ === 2.2.1 / 2013-07-02
278
+
279
+ * 1 minor feature:
280
+
281
+ * Introduce preload flag
282
+
283
+ * 1 bug fix:
284
+
285
+ * Pass custom restart command in JRuby
286
+
287
+ === 2.2.0 / 2013-07-01
288
+
289
+ * 1 major feature:
290
+
291
+ * Add ability to preload rack app
292
+
293
+ * 2 minor bugfixes:
294
+
295
+ * Don't leak info when not in development. Fixes #256
296
+ * Load the app, then bind the ports
297
+
298
+ === 2.1.1 / 2013-06-20
299
+
300
+ * 2 minor bug fixes:
301
+
302
+ * Fix daemonization on jruby
303
+ * Load the application before daemonizing. Fixes #285
304
+
305
+ === 2.1.0 / 2013-06-18
306
+
307
+ * 3 minor features:
308
+ * Allow listening socket to be configured via Capistrano variable
309
+ * Output results from 'stat's command when using pumactl
310
+ * Support systemd socket activation
311
+
312
+ * 15 bug fixes:
313
+ * Deal with pipes closing while stopping. Fixes #270
314
+ * Error out early if there is no app configured
315
+ * Handle ConnectionError rather than the lowlevel exceptions
316
+ * tune with `-C` config file and `on_worker_boot`
317
+ * use `-w`
318
+ * Fixed some typos in upstart scripts
319
+ * Make sure to use bytesize instead of size (MiniSSL write)
320
+ * Fix an error in puma-manager.conf
321
+ * fix: stop leaking sockets on restart (affects ruby 1.9.3 or before)
322
+ * Ignore errors on the cross-thread pipe. Fixes #246
323
+ * Ignore errors while uncorking the socket (it might already be closed)
324
+ * Ignore the body on a HEAD request. Fixes #278
325
+ * Handle all engine data when possible. Fixes #251.
326
+ * Handle all read exceptions properly. Fixes #252
327
+ * Handle errors from the server better
328
+
329
+ * 3 doc changes:
330
+ * Add note about on_worker_boot hook
331
+ * Add some documentation for Clustered mode
332
+ * Added quotes to /etc/puma.conf
333
+
334
+ === 2.0.1 / 2013-04-30
335
+
336
+ * 1 bug fix:
337
+
338
+ * Fix not starting on JRuby properly
339
+
340
+ === 2.0.0 / 2013-04-29
341
+
342
+ RailsConf 2013 edition!
343
+
344
+ * 2 doc changes:
345
+ * Start with rackup -s Puma, NOT rackup -s puma.
346
+ * Minor doc fixes in the README.md, Capistrano section
347
+
348
+ * 2 bug fixes:
349
+ * Fix reading RACK_ENV properly. Fixes #234
350
+ * Make cap recipe handle tmp/sockets; fixes #228
351
+
352
+ * 3 minor changes:
353
+ * Fix capistrano recipe
354
+ * Fix stdout/stderr logs to sync outputs
355
+ * allow binding to IPv6 addresses
356
+
357
+ === 2.0.0.b7 / 2013-03-18
358
+
359
+ * 5 minor enhancements:
360
+
361
+ * Add -q option for :start
362
+ * Add -V, --version
363
+ * Add default Rack handler helper
364
+ * Upstart support
365
+ * Set worker directory from configuration file
366
+
367
+ * 12 bug fixes:
368
+
369
+ * Close the binder in the right place. Fixes #192
370
+ * Handle early term in workers. Fixes #206
371
+ * Make sure that the default port is 80 when the request doesn't include HTTP_X_FORWARDED_PROTO.
372
+ * Prevent Errno::EBADF errors on restart when running ruby 2.0
373
+ * Record the proper @master_pid
374
+ * Respect the header HTTP_X_FORWARDED_PROTO when the host doesn't include a port number.
375
+ * Retry EAGAIN/EWOULDBLOCK during syswrite
376
+ * Run exec properly to restart. Fixes #154
377
+ * Set Rack run_once to false
378
+ * Syncronize all access to @timeouts. Fixes #208
379
+ * Write out the state post-daemonize. Fixes #189
380
+ * Prevent crash when all workers are gone
381
+
382
+ === 2.0.0.b6 / 2013-02-06
383
+
384
+ * 2 minor enhancements:
385
+
386
+ * Add hook for running when a worker boots
387
+ * Advertise the Configuration object for apps to use.
388
+
389
+ * 1 bug fix:
390
+
391
+ * Change directory in working during upgrade. Fixes #185
392
+
393
+ === 2.0.0.b5 / 2013-02-05
394
+
395
+ * 2 major features:
396
+ * Add phased worker upgrade
397
+ * Add support for the rack hijack protocol
398
+
399
+ * 2 minor features:
400
+ * Add -R to specify the restart command
401
+ * Add config file option to specify the restart command
402
+
403
+ * 5 bug fixes:
404
+ * Cleanup pipes properly. Fixes #182
405
+ * Daemonize earlier so that we don't lose app threads. Fixes #183
406
+ * Drain the notification pipe. Fixes #176, thanks @cryo28
407
+ * Move write_pid to after we daemonize. Fixes #180
408
+ * Redirect IO properly and emit message for checkpointing
409
+
410
+ === 2.0.0.b4 / 2012-12-12
411
+
412
+ * 4 bug fixes:
413
+ * Properly check #syswrite's value for variable sized buffers. Fixes #170
414
+ * Shutdown status server properly
415
+ * Handle char vs byte and mixing syswrite with write properly
416
+ * made MiniSSL validate key/cert file existence
417
+
418
+ === 2.0.0.b3 / 2012-11-22
419
+
420
+ * 1 bug fix:
421
+ * Package right files in gem
422
+
423
+ === 2.0.0.b2 / 2012-11-18
424
+ * 5 minor feature:
425
+ * Now Puma is bundled with an capistrano recipe. Just require
426
+ 'puma/capistrano' in you deploy.rb
427
+ * Only inject CommonLogger in development mode
428
+ * Add -p option to pumactl
429
+ * Add ability to use pumactl to start a server
430
+ * Add options to daemonize puma
431
+
432
+ * 7 bug fixes:
433
+ * Reset the IOBuffer properly. Fixes #148
434
+ * Shutdown gracefully on JRuby with Ctrl-C
435
+ * Various methods to get newrelic to start. Fixes #128
436
+ * fixing syntax error at capistrano recipe
437
+ * Force ECONNRESET when read returns nil
438
+ * Be sure to empty the drain the todo before shutting down. Fixes #155
439
+ * allow for alternate locations for status app
440
+
441
+ === 2.0.0.b1 / 2012-09-11
442
+
443
+ * 1 major feature:
444
+ * Optional worker process mode (-w) to allow for process scaling in
445
+ addition to thread scaling
446
+
447
+ * 1 bug fix:
448
+ * Introduce Puma::MiniSSL to be able to properly control doing
449
+ nonblocking SSL
450
+
451
+ NOTE: SSL support in JRuby is not supported at present. Support will
452
+ be added back in a future date when a java Puma::MiniSSL is added.
453
+
454
+ === 1.6.3 / 2012-09-04
455
+
456
+ * 1 bug fix:
457
+ * Close sockets waiting in the reactor when a hot restart is performed
458
+ so that browsers reconnect on the next request
459
+
460
+ === 1.6.2 / 2012-08-27
461
+
462
+ * 1 bug fix:
463
+ * Rescue StandardError instead of IOError to handle SystemCallErrors
464
+ as well as other application exceptions inside the reactor.
465
+
466
+ === 1.6.1 / 2012-07-23
467
+
468
+ * 1 packaging bug fixed:
469
+ * Include missing files
470
+
471
+ === 1.6.0 / 2012-07-23
472
+
473
+ * 1 major bug fix:
474
+ * Prevent slow clients from starving the server by introducing a
475
+ dedicated IO reactor thread. Credit for reporting goes to @meh.
476
+
477
+ === 1.5.0 / 2012-07-19
478
+
479
+ * 7 contributers to this release:
480
+ * Christian Mayer
481
+ * Darío Javier Cravero
482
+ * Dirkjan Bussink
483
+ * Gianluca Padovani
484
+ * Santiago Pastorino
485
+ * Thibault Jouan
486
+ * tomykaira
487
+
488
+ * 6 bug fixes:
489
+ * Define RSTRING_NOT_MODIFIED for Rubinius
490
+ * Convert status to integer. Fixes #123
491
+ * Delete pidfile when stopping the server
492
+ * Allow compilation with -Werror=format-security option
493
+ * Fix wrong HTTP version for a HTTP/1.0 request
494
+ * Use String#bytesize instead of String#length
495
+
496
+ * 3 minor features:
497
+ * Added support for setting RACK_ENV via the CLI, config file, and rack app
498
+ * Allow Server#run to run sync. Fixes #111
499
+ * Puma can now run on windows
500
+
501
+ === 1.4.0 / 2012-06-04
502
+
503
+ * 1 bug fix:
504
+ * SCRIPT_NAME should be passed from env to allow mounting apps
505
+
506
+ * 1 experimental feature:
507
+ * Add puma.socket key for direct socket access
508
+
509
+ === 1.3.1 / 2012-05-15
510
+
511
+ * 2 bug fixes:
512
+ * use #bytesize instead of #length for Content-Length header
513
+ * Use StringIO properly. Fixes #98
514
+
515
+ === 1.3.0 / 2012-05-08
516
+
517
+ * 2 minor features:
518
+ * Return valid Rack responses (passes Lint) from status server
519
+ * Add -I option to specify $LOAD_PATH directories
520
+
521
+ * 4 bug fixes:
522
+ * Don't join the server thread inside the signal handle. Fixes #94
523
+ * Make NullIO#read mimic IO#read
524
+ * Only stop the status server if it's started. Fixes #84
525
+ * Set RACK_ENV early in cli also. Fixes #78
526
+
527
+ * 1 new contributer:
528
+ * Jesse Cooke
529
+
530
+ === 1.2.2 / 2012-04-28
531
+
532
+ * 4 bug fixes:
533
+
534
+ * Report a lowlevel error to stderr
535
+ * Set a fallback SERVER_NAME and SERVER_PORT
536
+ * Keep the encoding of the body correct. Fixes #79
537
+ * show error.to_s along with backtrace for low-level error
538
+
539
+ === 1.2.1 / 2012-04-11
540
+
541
+ 1 bug fix:
542
+
543
+ * Fix rack.url_scheme for SSL servers. Fixes #65
544
+
545
+ === 1.2.0 / 2012-04-11
546
+
547
+ 1 major feature:
548
+
549
+ * When possible, the internal restart does a "hot restart" meaning
550
+ the server sockets remains open, so no connections are lost.
551
+
552
+ 1 minor feature:
553
+
554
+ * More helpful fallback error message
555
+
556
+ 6 bug fixes:
557
+
558
+ * Pass the proper args to unknown_error. Fixes #54, #58
559
+ * Stop the control server before restarting. Fixes #61
560
+ * Fix reporting https only on a true SSL connection
561
+ * Set the default content type to 'text/plain'. Fixes #63
562
+ * Use REUSEADDR. Fixes #60
563
+ * Shutdown gracefull on SIGTERM. Fixes #53
564
+
565
+ 2 new contributers:
566
+
567
+ * Seamus Abshere
568
+ * Steve Richert
569
+
570
+ === 1.1.1 / 2012-03-30
571
+
572
+ 1 bugfix:
573
+
574
+ * Include puma/compat.rb in the gem (oops!)
575
+
576
+ === 1.1.0 / 2012-03-30
577
+
578
+ 1 bugfix:
579
+
580
+ * Make sure that the unix socket has the perms 0777 by default
581
+
582
+ 1 minor feature:
583
+
584
+ * Add umask param to the unix:// bind to set the umask
585
+
586
+ === 1.0.0 / 2012-03-29
587
+
588
+ * Released!