puma-simon 3.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (157) hide show
  1. checksums.yaml +7 -0
  2. data/.github/issue_template.md +20 -0
  3. data/.gitignore +18 -0
  4. data/.hoeignore +12 -0
  5. data/.travis.yml +29 -0
  6. data/DEPLOYMENT.md +91 -0
  7. data/Gemfile +12 -0
  8. data/History.md +1254 -0
  9. data/LICENSE +26 -0
  10. data/Manifest.txt +78 -0
  11. data/README.md +353 -0
  12. data/Rakefile +158 -0
  13. data/Release.md +9 -0
  14. data/bin/puma +10 -0
  15. data/bin/puma-wild +31 -0
  16. data/bin/pumactl +12 -0
  17. data/docs/nginx.md +80 -0
  18. data/docs/signals.md +43 -0
  19. data/docs/systemd.md +197 -0
  20. data/examples/CA/cacert.pem +23 -0
  21. data/examples/CA/newcerts/cert_1.pem +19 -0
  22. data/examples/CA/newcerts/cert_2.pem +19 -0
  23. data/examples/CA/private/cakeypair.pem +30 -0
  24. data/examples/CA/serial +1 -0
  25. data/examples/config.rb +200 -0
  26. data/examples/plugins/redis_stop_puma.rb +46 -0
  27. data/examples/puma/cert_puma.pem +19 -0
  28. data/examples/puma/client-certs/ca.crt +19 -0
  29. data/examples/puma/client-certs/ca.key +27 -0
  30. data/examples/puma/client-certs/client.crt +19 -0
  31. data/examples/puma/client-certs/client.key +27 -0
  32. data/examples/puma/client-certs/client_expired.crt +19 -0
  33. data/examples/puma/client-certs/client_expired.key +27 -0
  34. data/examples/puma/client-certs/client_unknown.crt +19 -0
  35. data/examples/puma/client-certs/client_unknown.key +27 -0
  36. data/examples/puma/client-certs/generate.rb +78 -0
  37. data/examples/puma/client-certs/keystore.jks +0 -0
  38. data/examples/puma/client-certs/server.crt +19 -0
  39. data/examples/puma/client-certs/server.key +27 -0
  40. data/examples/puma/client-certs/server.p12 +0 -0
  41. data/examples/puma/client-certs/unknown_ca.crt +19 -0
  42. data/examples/puma/client-certs/unknown_ca.key +27 -0
  43. data/examples/puma/csr_puma.pem +11 -0
  44. data/examples/puma/keystore.jks +0 -0
  45. data/examples/puma/puma_keypair.pem +15 -0
  46. data/examples/qc_config.rb +13 -0
  47. data/ext/puma_http11/PumaHttp11Service.java +17 -0
  48. data/ext/puma_http11/ext_help.h +15 -0
  49. data/ext/puma_http11/extconf.rb +15 -0
  50. data/ext/puma_http11/http11_parser.c +1069 -0
  51. data/ext/puma_http11/http11_parser.h +65 -0
  52. data/ext/puma_http11/http11_parser.java.rl +161 -0
  53. data/ext/puma_http11/http11_parser.rl +147 -0
  54. data/ext/puma_http11/http11_parser_common.rl +54 -0
  55. data/ext/puma_http11/io_buffer.c +155 -0
  56. data/ext/puma_http11/mini_ssl.c +457 -0
  57. data/ext/puma_http11/org/jruby/puma/Http11.java +234 -0
  58. data/ext/puma_http11/org/jruby/puma/Http11Parser.java +473 -0
  59. data/ext/puma_http11/org/jruby/puma/MiniSSL.java +339 -0
  60. data/ext/puma_http11/puma_http11.c +500 -0
  61. data/gemfiles/2.1-Gemfile +12 -0
  62. data/lib/puma.rb +15 -0
  63. data/lib/puma/accept_nonblock.rb +23 -0
  64. data/lib/puma/app/status.rb +66 -0
  65. data/lib/puma/binder.rb +402 -0
  66. data/lib/puma/cli.rb +220 -0
  67. data/lib/puma/client.rb +434 -0
  68. data/lib/puma/cluster.rb +510 -0
  69. data/lib/puma/commonlogger.rb +106 -0
  70. data/lib/puma/compat.rb +14 -0
  71. data/lib/puma/configuration.rb +364 -0
  72. data/lib/puma/const.rb +224 -0
  73. data/lib/puma/control_cli.rb +259 -0
  74. data/lib/puma/convenient.rb +23 -0
  75. data/lib/puma/daemon_ext.rb +31 -0
  76. data/lib/puma/delegation.rb +11 -0
  77. data/lib/puma/detect.rb +13 -0
  78. data/lib/puma/dsl.rb +486 -0
  79. data/lib/puma/events.rb +152 -0
  80. data/lib/puma/io_buffer.rb +7 -0
  81. data/lib/puma/java_io_buffer.rb +45 -0
  82. data/lib/puma/jruby_restart.rb +83 -0
  83. data/lib/puma/launcher.rb +410 -0
  84. data/lib/puma/minissl.rb +221 -0
  85. data/lib/puma/null_io.rb +42 -0
  86. data/lib/puma/plugin.rb +115 -0
  87. data/lib/puma/plugin/tmp_restart.rb +35 -0
  88. data/lib/puma/rack/backports/uri/common_193.rb +33 -0
  89. data/lib/puma/rack/builder.rb +298 -0
  90. data/lib/puma/rack/urlmap.rb +91 -0
  91. data/lib/puma/rack_default.rb +7 -0
  92. data/lib/puma/reactor.rb +210 -0
  93. data/lib/puma/runner.rb +171 -0
  94. data/lib/puma/server.rb +949 -0
  95. data/lib/puma/single.rb +112 -0
  96. data/lib/puma/state_file.rb +29 -0
  97. data/lib/puma/tcp_logger.rb +39 -0
  98. data/lib/puma/thread_pool.rb +297 -0
  99. data/lib/puma/util.rb +128 -0
  100. data/lib/rack/handler/puma.rb +78 -0
  101. data/puma.gemspec +52 -0
  102. data/test/ab_rs.rb +22 -0
  103. data/test/config.rb +2 -0
  104. data/test/config/app.rb +9 -0
  105. data/test/config/plugin.rb +1 -0
  106. data/test/config/settings.rb +2 -0
  107. data/test/config/state_file_testing_config.rb +14 -0
  108. data/test/hello-bind.ru +2 -0
  109. data/test/hello-delay.ru +3 -0
  110. data/test/hello-map.ru +3 -0
  111. data/test/hello-post.ru +4 -0
  112. data/test/hello-stuck.ru +1 -0
  113. data/test/hello-tcp.ru +5 -0
  114. data/test/hello.ru +1 -0
  115. data/test/hijack.ru +6 -0
  116. data/test/hijack2.ru +5 -0
  117. data/test/lobster.ru +4 -0
  118. data/test/shell/run.sh +24 -0
  119. data/test/shell/t1.rb +19 -0
  120. data/test/shell/t1_conf.rb +3 -0
  121. data/test/shell/t2.rb +17 -0
  122. data/test/shell/t2_conf.rb +6 -0
  123. data/test/shell/t3.rb +25 -0
  124. data/test/shell/t3_conf.rb +5 -0
  125. data/test/slow.ru +4 -0
  126. data/test/ssl_config.rb +4 -0
  127. data/test/test_app_status.rb +93 -0
  128. data/test/test_binder.rb +31 -0
  129. data/test/test_cli.rb +209 -0
  130. data/test/test_config.rb +95 -0
  131. data/test/test_events.rb +161 -0
  132. data/test/test_helper.rb +50 -0
  133. data/test/test_http10.rb +27 -0
  134. data/test/test_http11.rb +186 -0
  135. data/test/test_integration.rb +247 -0
  136. data/test/test_iobuffer.rb +39 -0
  137. data/test/test_minissl.rb +29 -0
  138. data/test/test_null_io.rb +49 -0
  139. data/test/test_persistent.rb +245 -0
  140. data/test/test_puma_server.rb +626 -0
  141. data/test/test_puma_server_ssl.rb +222 -0
  142. data/test/test_rack_handler.rb +57 -0
  143. data/test/test_rack_server.rb +138 -0
  144. data/test/test_tcp_logger.rb +39 -0
  145. data/test/test_tcp_rack.rb +36 -0
  146. data/test/test_thread_pool.rb +250 -0
  147. data/test/test_unix_socket.rb +35 -0
  148. data/test/test_web_server.rb +88 -0
  149. data/tools/jungle/README.md +9 -0
  150. data/tools/jungle/init.d/README.md +59 -0
  151. data/tools/jungle/init.d/puma +421 -0
  152. data/tools/jungle/init.d/run-puma +18 -0
  153. data/tools/jungle/upstart/README.md +61 -0
  154. data/tools/jungle/upstart/puma-manager.conf +31 -0
  155. data/tools/jungle/upstart/puma.conf +69 -0
  156. data/tools/trickletest.rb +45 -0
  157. metadata +297 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: da87813135b854ec14615b89fa69b7309d0a9754
4
+ data.tar.gz: 71bee09d8654ff891e7257531e1a0d7a4b389ed2
5
+ SHA512:
6
+ metadata.gz: 4f804853d8752311e58708573c542b20c75ab3a113e35b0160c3e98d12cf3ce21c7e290f188d51716cc9f868f8a4ac8f2ab8bd7402af7615cb2b6bcb5c59dde2
7
+ data.tar.gz: 976b89bc7f7955732bac8e5cc2e6e0559a1b3478db722b5e77cc5760edb8f84230f739d718373a900072483c1ecc98a54ecf1b30ce833997b1b4471bd2b3b34f
@@ -0,0 +1,20 @@
1
+ ### Steps to reproduce
2
+
3
+ 1) ...
4
+
5
+ 2) ...
6
+
7
+ 3) ...
8
+
9
+ ### Expected behavior
10
+
11
+ Tell us what should happen ...
12
+
13
+ ### Actual behavior
14
+
15
+ Tell us what happens instead ...
16
+
17
+ ### System configuration
18
+
19
+ **Ruby version**:
20
+ **Rails version**:
@@ -0,0 +1,18 @@
1
+ scratch/
2
+ *.bundle
3
+ *.log
4
+ *.o
5
+ *.so
6
+ *.jar
7
+ *.rbc
8
+ doc
9
+ log
10
+ pkg
11
+ tmp
12
+ t/
13
+ .rbx/
14
+ Gemfile.lock
15
+ .idea/
16
+ /test/test_puma.state
17
+ /test/test_server.sock
18
+ /test/test_control.sock
@@ -0,0 +1,12 @@
1
+ .hoeignore
2
+ .gitignore
3
+ .travis.yml
4
+ .git/
5
+ t/
6
+ tmp/
7
+ scratch/
8
+ test/
9
+ examples/
10
+ Gemfile.lock
11
+ *.jar
12
+ *.bundle
@@ -0,0 +1,29 @@
1
+ dist: trusty
2
+ sudo: false
3
+ group: beta
4
+ language: ruby
5
+ cache: bundler
6
+ before_install:
7
+ # bundler installation needed for jruby-head
8
+ # https://github.com/travis-ci/travis-ci/issues/5861
9
+ - gem install bundler -v 1.11.2
10
+ script: "TESTOPTS=-v bundle exec rake test"
11
+ branches:
12
+ only: [master]
13
+ rvm:
14
+ - 2.2.6
15
+ - 2.3.3
16
+ - 2.4.0
17
+ - ruby-head
18
+ - jruby-9.1.7.0
19
+ - jruby-head
20
+ - rbx-3
21
+ matrix:
22
+ include:
23
+ - rvm: 2.1
24
+ gemfile: gemfiles/2.1-Gemfile
25
+ fast_finish: true
26
+ allow_failures:
27
+ - rvm: jruby-head
28
+ - rvm: rbx-3
29
+ - rvm: ruby-head
@@ -0,0 +1,91 @@
1
+ # Deployment engineering for puma
2
+
3
+ Puma is software that is expected to be run in a deployed environment eventually.
4
+ You can certainly 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 conceived 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 16 and that's 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. It is not compatible with phased-restart and `prune_bundler` as well.
80
+
81
+ 1. Use `prune_bundler`. This makes it so that the cluster master will detach itself
82
+ from a Bundler context on start. This allows the cluster workers to load your app
83
+ and start a brand new Bundler context within the worker only. This means your
84
+ master remains pristine and can live on between new releases of your code.
85
+
86
+ 1. Use phased-restart (`SIGUSR1` or `pumactl phased-restart`). This tells the master
87
+ to kill off one worker at a time and restart them in your new code. This minimizes
88
+ downtime and staggers the restart nicely. **WARNING** This means that both your
89
+ old code and your new code will be running concurrently. Most deployment solutions
90
+ already cause that, but it's worth warning you about it again. Be careful with your
91
+ migrations, etc!
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "hoe"
4
+ gem "hoe-git"
5
+ gem "hoe-ignore"
6
+ gem "rdoc"
7
+ gem "rake-compiler"
8
+
9
+ gem "rack", "< 3.0"
10
+ gem "minitest", "~> 5.9"
11
+
12
+ gem "jruby-openssl", :platform => "jruby"
@@ -0,0 +1,1254 @@
1
+ ## 3.7.1 / 2017-02-20
2
+
3
+ * 2 bugfixes:
4
+ * Fix typo which blew up MiniSSL (#1182)
5
+ * Stop overriding command-line options with the config file (#1203)
6
+
7
+ ## 3.7.0 / 2017-01-04
8
+
9
+ * 6 minor features:
10
+ * Allow rack handler to accept ssl host. (#1129)
11
+ * Refactor TTOU processing. TTOU now handles multiple signals at once. (#1165)
12
+ * Pickup any remaining chunk data as the next request.
13
+ * Prevent short term thread churn - increased auto trim default to 30 seconds.
14
+ * Raise error when `stdout` or `stderr` is not writable. (#1175)
15
+ * Add Rack 2.0 support to gemspec. (#1068)
16
+
17
+ * 5 refactors:
18
+ * Compare host and server name only once per call. (#1091)
19
+ * Minor refactor on Thread pool (#1088)
20
+ * Removed a ton of unused constants, variables and files.
21
+ * Use MRI macros when allocating heap memory
22
+ * Use hooks for on_booted event. (#1160)
23
+
24
+ * 14 bugfixes:
25
+ * Add eof? method to NullIO? (#1169)
26
+ * Fix Puma startup in provided init.d script (#1061)
27
+ * Fix default SSL mode back to none. (#1036)
28
+ * Fixed the issue of @listeners getting nil io (#1120)
29
+ * Make `get_dh1024` compatible with OpenSSL v1.1.0 (#1178)
30
+ * More gracefully deal with SSL sessions. Fixes #1002
31
+ * Move puma.rb to just autoloads. Fixes #1063
32
+ * MiniSSL: Provide write as <<. Fixes #1089
33
+ * Prune bundler should inherit fds (#1114)
34
+ * Replace use of Process.getpgid which does not behave as intended on all platforms (#1110)
35
+ * Transfer encoding header should be downcased before comparison (#1135)
36
+ * Use same write log logic for hijacked requests. (#1081)
37
+ * Fix `uninitialized constant Puma::StateFile` (#1138)
38
+ * Fix access priorities of each level in LeveledOptions (#1118)
39
+
40
+ * 3 others:
41
+
42
+ * Lots of tests added/fixed/improved. Switched to Minitest from Test::Unit. Big thanks to @frodsan.
43
+ * Lots of documentation added/improved.
44
+ * Add license indicators to the HTTP extension. (#1075)
45
+
46
+ ## 3.6.2 / 2016-11-22
47
+
48
+ * 1 bug fix:
49
+
50
+ * Revert #1118/Fix access priorities of each level in LeveledOptions. This
51
+ had an unintentional side effect of changing the importance of command line
52
+ options, such as -p.
53
+
54
+ ## 3.6.1 / 2016-11-21
55
+
56
+ * 8 bug fixes:
57
+
58
+ * Fix Puma start in init.d script.
59
+ * Fix default SSL mode back to none. Fixes #1036
60
+ * Fixed the issue of @listeners getting nil io, fix rails restart (#1120)
61
+ * More gracefully deal with SSL sessions. Fixes #1002
62
+ * Prevent short term thread churn.
63
+ * Provide write as <<. Fixes #1089
64
+ * Fix access priorities of each level in LeveledOptions - fixes TTIN.
65
+ * Stub description files updated for init.d.
66
+
67
+ * 2 new project committers:
68
+
69
+ * Nate Berkopec (@nateberkopec)
70
+ * Richard Schneeman (@schneems)
71
+
72
+ ## 3.6.0 / 2016-07-24
73
+
74
+ * 12 bug fixes:
75
+ * Add ability to detect a shutting down server. Fixes #932
76
+ * Add support for Expect: 100-continue. Fixes #519
77
+ * Check SSLContext better. Fixes #828
78
+ * Clarify behavior of '-t num'. Fixes #984
79
+ * Don't default to VERIFY_PEER. Fixes #1028
80
+ * Don't use ENV['PWD'] on windows. Fixes #1023
81
+ * Enlarge the scope of catching app exceptions. Fixes #1027
82
+ * Execute background hooks after daemonizing. Fixes #925
83
+ * Handle HUP as a stop unless there is IO redirection. Fixes #911
84
+ * Implement chunked request handling. Fixes #620
85
+ * Just rescue exception to return a 500. Fixes #1027
86
+ * Redirect IO in the jruby daemon mode. Fixes #778
87
+
88
+ ## 3.5.2 / 2016-07-20
89
+
90
+ * 1 bug fix:
91
+ * Don't let persistent_timeout be nil
92
+
93
+ * 1 PR merged:
94
+ * Merge pull request #1021 from benzrf/patch-1
95
+
96
+ ## 3.5.1 / 2016-07-20
97
+
98
+ * 1 bug fix:
99
+ * Be sure to only listen on host:port combos once. Fixes #1022
100
+
101
+ ## 3.5.0 / 2016-07-18
102
+
103
+ * 1 minor features:
104
+ * Allow persistent_timeout to be configured via the dsl.
105
+
106
+ * 9 bug fixes:
107
+ * Allow a bare % in a query string. Fixes #958
108
+ * Explicitly listen on all localhost addresses. Fixes #782
109
+ * Fix `TCPLogger` log error in tcp cluster mode.
110
+ * Fix puma/puma#968 Cannot bind SSL port due to missing verify_mode option
111
+ * Fix puma/puma#968 Default verify_mode to peer
112
+ * Log any exceptions in ThreadPool. Fixes #1010
113
+ * Silence connection errors in the reactor. Fixes #959
114
+ * Tiny fixes in hook documentation for #840
115
+ * It should not log requests if we want it to be quiet
116
+
117
+ * 5 doc fixes:
118
+ * Add How to stop Puma on Heroku using plugins to the example directory
119
+ * Provide both hot and phased restart in jungle script
120
+ * Update reference to the instances management script
121
+ * Update default number of threads
122
+ * Fix typo in example config
123
+
124
+ * 14 PRs merged:
125
+ * Merge pull request #1007 from willnet/patch-1
126
+ * Merge pull request #1014 from jeznet/patch-1
127
+ * Merge pull request #1015 from bf4/patch-1
128
+ * Merge pull request #1017 from jorihardman/configurable_persistent_timeout
129
+ * Merge pull request #954 from jf/master
130
+ * Merge pull request #955 from jf/add-request-info-to-standard-error-rescue
131
+ * Merge pull request #956 from maxkwallace/master
132
+ * Merge pull request #960 from kmayer/kmayer-plugins-heroku-restart
133
+ * Merge pull request #969 from frankwong15/master
134
+ * Merge pull request #970 from willnet/delete-blank-document
135
+ * Merge pull request #974 from rocketjob/feature/name_threads
136
+ * Merge pull request #977 from snow/master
137
+ * Merge pull request #981 from zach-chai/patch-1
138
+ * Merge pull request #993 from scorix/master
139
+
140
+ ## 3.4.0 / 2016-04-07
141
+
142
+ * 2 minor features:
143
+ * Add ability to force threads to stop on shutdown. Fixes #938
144
+ * Detect and commit seppuku when fork(2) fails. Fixes #529
145
+
146
+ * 3 unknowns:
147
+ * Ignore errors trying to update the backport tables. Fixes #788
148
+ * Invoke the lowlevel_error in more places to allow for exception tracking. Fixes #894
149
+ * Update the query string when an absolute URI is used. Fixes #937
150
+
151
+ * 5 doc fixes:
152
+ * Add Process Monitors section to top-level README
153
+ * Better document the hooks. Fixes #840
154
+ * docs/system.md sample config refinements and elaborations
155
+ * Fix typos at couple of places.
156
+ * Cleanup warnings
157
+
158
+ * 3 PRs merged:
159
+ * Merge pull request #945 from dekellum/systemd-docs-refined
160
+ * Merge pull request #946 from vipulnsward/rm-pid
161
+ * Merge pull request #947 from vipulnsward/housekeeping-typos
162
+
163
+ ## 3.3.0 / 2016-04-05
164
+
165
+ * 2 minor features:
166
+ * Allow overriding options of Configuration object
167
+ * Rename to inherit_ssl_listener like inherit_tcp|unix
168
+
169
+ * 2 doc fixes:
170
+ * Add docs/systemd.md (with socket activation sub-section)
171
+ * Document UNIX signals with cluster on README.md
172
+
173
+ * 3 PRs merged:
174
+ * Merge pull request #936 from prathamesh-sonpatki/allow-overriding-config-options
175
+ * Merge pull request #940 from kyledrake/signalsdoc
176
+ * Merge pull request #942 from dekellum/socket-activate-improve
177
+
178
+ ## 3.2.0 / 2016-03-20
179
+
180
+ * 1 deprecation removal:
181
+ * Delete capistrano.rb
182
+
183
+ * 3 bug fixes:
184
+ * Detect gems.rb as well as Gemfile
185
+ * Simplify and fix logic for directory to use when restarting for all phases
186
+ * Speed up phased-restart start
187
+
188
+ * 2 PRs merged:
189
+ * Merge pull request #927 from jlecour/gemfile_variants
190
+ * Merge pull request #931 from joneslee85/patch-10
191
+
192
+ ## 3.1.1 / 2016-03-17
193
+
194
+ * 4 bug fixes:
195
+ * Disable USR1 usage on JRuby
196
+ * Fixes #922 - Correctly define file encoding as UTF-8
197
+ * Set a more explicit SERVER_SOFTWARE Rack variable
198
+ * Show RUBY_ENGINE_VERSION if available. Fixes #923
199
+
200
+ * 3 PRs merged:
201
+ * Merge pull request #912 from tricknotes/fix-allow-failures-in-travis-yml
202
+ * Merge pull request #921 from swrobel/patch-1
203
+ * Merge pull request #924 from tbrisker/patch-1
204
+
205
+ ## 3.1.0 / 2016-03-05
206
+
207
+ * 1 minor feature:
208
+ * Add 'import' directive to config file. Fixes #916
209
+
210
+ * 5 bug fixes:
211
+ * Add 'fetch' to options. Fixes #913
212
+ * Fix jruby daemonization. Fixes #918
213
+ * Recreate the proper args manually. Fixes #910
214
+ * Require 'time' to get iso8601. Fixes #914
215
+
216
+ ## 3.0.2 / 2016-02-26
217
+
218
+ * 5 bug fixes:
219
+
220
+ * Fix 'undefined local variable or method `pid` for #<Puma::ControlCLI:0x007f185fcef968>' when execute pumactl with `--pid` option.
221
+ * Fix 'undefined method `windows?` for Puma:Module' when execute pumactl.
222
+ * Harden tmp_restart against errors related to the restart file
223
+ * Make `plugin :tmp_restart` behavior correct in Windows.
224
+ * fix uninitialized constant Puma::ControlCLI::StateFile
225
+
226
+ * 3 PRs merged:
227
+
228
+ * Merge pull request #901 from mitto/fix-pumactl-uninitialized-constant-statefile
229
+ * Merge pull request #902 from corrupt952/fix_undefined_method_and_variable_when_execute_pumactl
230
+ * Merge pull request #905 from Eric-Guo/master
231
+
232
+ ## 3.0.1 / 2016-02-25
233
+
234
+ * 1 bug fix:
235
+
236
+ * Removed the experimental support for async.callback as it broke
237
+ websockets entirely. Seems no server has both hijack and async.callback
238
+ and thus faye is totally confused what to do and doesn't work.
239
+
240
+ ## 3.0.0 / 2016-02-25
241
+
242
+ * 2 major changes:
243
+
244
+ * Ruby pre-2.0 is no longer supported. We'll do our best to not add
245
+ features that break those rubies but will no longer be testing
246
+ with them.
247
+ * Don't log requests by default. Fixes #852
248
+
249
+ * 2 major features:
250
+
251
+ * Plugin support! Plugins can interact with configuration as well
252
+ as provide augment server functionality!
253
+ * Experimental env['async.callback'] support
254
+
255
+ * 4 minor features:
256
+
257
+ * Listen to unix socket with provided backlog if any
258
+ * Improves the clustered stats to report worker stats
259
+ * Pass the env to the lowlevel_error handler. Fixes #854
260
+ * Treat path-like hosts as unix sockets. Fixes #824
261
+
262
+ * 5 bug fixes:
263
+
264
+ * Clean thread locals when using keepalive. Fixes #823
265
+ * Cleanup compiler warnings. Fixes #815
266
+ * Expose closed? for use by the reactor. Fixes #835
267
+ * Move signal handlers to separate method to prevent space leak. Fixes #798
268
+ * Signal not full on worker exit #876
269
+
270
+ * 5 doc fixes:
271
+
272
+ * Update README.md with various grammar fixes
273
+ * Use newest version of Minitest
274
+ * Add directory configuration docs, fix typo [ci skip]
275
+ * Remove old COPYING notice. Fixes #849
276
+
277
+ * 10 merged PRs:
278
+
279
+ * Merge pull request #871 from deepj/travis
280
+ * Merge pull request #874 from wallclockbuilder/master
281
+ * Merge pull request #883 from dadah89/igor/trim_only_worker
282
+ * Merge pull request #884 from uistudio/async-callback
283
+ * Merge pull request #888 from mlarraz/tick_minitest
284
+ * Merge pull request #890 from todd/directory_docs
285
+ * Merge pull request #891 from ctaintor/improve_clustered_status
286
+ * Merge pull request #893 from spastorino/add_missing_require
287
+ * Merge pull request #897 from zendesk/master
288
+ * Merge pull request #899 from kch/kch-readme-fixes
289
+
290
+ ## 2.16.0 / 2016-01-27
291
+
292
+ * 7 minor features:
293
+
294
+ * Add 'set_remote_address' config option
295
+ * Allow to run puma in silent mode
296
+ * Expose cli options in DSL
297
+ * Support passing JRuby keystore info in ssl_bind DSL
298
+ * Allow umask for unix:/// style control urls
299
+ * Expose `old_worker_count` in stats url
300
+ * Support TLS client auth (verify_mode) in jruby
301
+
302
+ * 7 bug fixes:
303
+
304
+ * Don't persist before_fork hook in state file
305
+ * Reload bundler before pulling in rack. Fixes #859
306
+ * Remove NEWRELIC_DISPATCHER env variable
307
+ * Cleanup C code
308
+ * Use Timeout.timeout instead of Object.timeout
309
+ * Make phased restarts faster
310
+ * Ignore the case of certain headers, because HTTP
311
+
312
+ * 1 doc changes:
313
+
314
+ * Test against the latest Ruby 2.1, 2.2, 2.3, head and JRuby 9.0.4.0 on Travis
315
+
316
+ * 12 merged PRs
317
+ * Merge pull request #822 from kwugirl/remove_NEWRELIC_DISPATCHER
318
+ * Merge pull request #833 from joemiller/jruby-client-tls-auth
319
+ * Merge pull request #837 from YuriSolovyov/ssl-keystore-jruby
320
+ * Merge pull request #839 from mezuka/master
321
+ * Merge pull request #845 from deepj/timeout-deprecation
322
+ * Merge pull request #846 from sriedel/strip_before_fork
323
+ * Merge pull request #850 from deepj/travis
324
+ * Merge pull request #853 from Jeffrey6052/patch-1
325
+ * Merge pull request #857 from zendesk/faster_phased_restarts
326
+ * Merge pull request #858 from mlarraz/fix_some_warnings
327
+ * Merge pull request #860 from zendesk/expose_old_worker_count
328
+ * Merge pull request #861 from zendesk/allow_control_url_umask
329
+
330
+ ## 2.15.3 / 2015-11-07
331
+
332
+ * 1 bug fix:
333
+
334
+ * Fix JRuby parser
335
+
336
+ ## 2.15.2 / 2015-11-06
337
+
338
+ * 2 bug fixes:
339
+ * ext/puma_http11: handle duplicate headers as per RFC
340
+ * Only set ctx.ca iff there is a params['ca'] to set with.
341
+
342
+ * 2 PRs merged:
343
+ * Merge pull request #818 from unleashed/support-duplicate-headers
344
+ * Merge pull request #819 from VictorLowther/fix-ca-and-verify_null-exception
345
+
346
+ ## 2.15.1 / 2015-11-06
347
+
348
+ * 1 bug fix:
349
+
350
+ * Allow older openssl versions
351
+
352
+ ## 2.15.0 / 2015-11-06
353
+
354
+ * 6 minor features:
355
+ * Allow setting ca without setting a verify mode
356
+ * Make jungle for init.d support rbenv
357
+ * Use SSL_CTX_use_certificate_chain_file for full chain
358
+ * cluster: add worker_boot_timeout option
359
+ * configuration: allow empty tags to mean no tag desired
360
+ * puma/cli: support specifying STD{OUT,ERR} redirections and append mode
361
+
362
+ * 5 bug fixes:
363
+ * Disable SSL Compression
364
+ * Fix bug setting worker_directory when using a symlink directory
365
+ * Fix error message in DSL that was slightly inaccurate
366
+ * Pumactl: set correct process name. Fixes #563
367
+ * thread_pool: fix race condition when shutting down workers
368
+
369
+ * 10 doc fixes:
370
+ * Add before_fork explanation in Readme.md
371
+ * Correct spelling in DEPLOYMENT.md
372
+ * Correct spelling in docs/nginx.md
373
+ * Fix spelling errors.
374
+ * Fix typo in deployment description
375
+ * Fix typos (it's -> its) in events.rb and server.rb
376
+ * fixing for typo mentioned in #803
377
+ * Spelling correction for README
378
+ * thread_pool: fix typos in comment
379
+ * More explicit docs for worker_timeout
380
+
381
+ * 18 PRs merged:
382
+ * Merge pull request #768 from nathansamson/patch-1
383
+ * Merge pull request #773 from rossta/spelling_corrections
384
+ * Merge pull request #774 from snow/master
385
+ * Merge pull request #781 from sunsations/fix-typo
386
+ * Merge pull request #791 from unleashed/allow_empty_tags
387
+ * Merge pull request #793 from robdimarco/fix-working-directory-symlink-bug
388
+ * Merge pull request #794 from peterkeen/patch-1
389
+ * Merge pull request #795 from unleashed/redirects-from-cmdline
390
+ * Merge pull request #796 from cschneid/fix_dsl_message
391
+ * Merge pull request #799 from annafw/master
392
+ * Merge pull request #800 from liamseanbrady/fix_typo
393
+ * Merge pull request #801 from scottjg/ssl-chain-file
394
+ * Merge pull request #802 from scottjg/ssl-crimes
395
+ * Merge pull request #804 from burningTyger/patch-2
396
+ * Merge pull request #809 from unleashed/threadpool-fix-race-in-shutdown
397
+ * Merge pull request #810 from vlmonk/fix-pumactl-restart-bug
398
+ * Merge pull request #814 from schneems/schneems/worker_timeout-docs
399
+ * Merge pull request #817 from unleashed/worker-boot-timeout
400
+
401
+ ## 2.14.0 / 2015-09-18
402
+
403
+ * 1 minor feature:
404
+ * Make building with SSL support optional
405
+
406
+ * 1 bug fix:
407
+ * Use Rack::Builder if available. Fixes #735
408
+
409
+ ## 2.13.4 / 2015-08-16
410
+
411
+ * 1 bug fix:
412
+ * Use the environment possible set by the config early and from
413
+ the config file later (if set).
414
+
415
+ ## 2.13.3 / 2015-08-15
416
+
417
+ Seriously, I need to revamp config with tests.
418
+
419
+ * 1 bug fix:
420
+ * Fix preserving options before cleaning for state. Fixes #769
421
+
422
+ ## 2.13.2 / 2015-08-15
423
+
424
+ The "clearly I don't have enough tests for the config" release.
425
+
426
+ * 1 bug fix:
427
+ * Fix another place binds wasn't initialized. Fixes #767
428
+
429
+ ## 2.13.1 / 2015-08-15
430
+
431
+ * 2 bug fixes:
432
+ * Fix binds being masked in config files. Fixes #765
433
+ * Use options from the config file properly in pumactl. Fixes #764
434
+
435
+ ## 2.13.0 / 2015-08-14
436
+
437
+ * 1 minor feature:
438
+ * Add before_fork hooks option.
439
+
440
+ * 3 bug fixes:
441
+ * Check for OPENSSL_NO_ECDH before using ECDH
442
+ * Eliminate logging overhead from JRuby SSL
443
+ * Prefer cli options over config file ones. Fixes #669
444
+
445
+ * 1 deprecation:
446
+ * Add deprecation warning to capistrano.rb. Fixes #673
447
+
448
+ * 4 PRs merged:
449
+ * Merge pull request #668 from kcollignon/patch-1
450
+ * Merge pull request #754 from nathansamson/before_boot
451
+ * Merge pull request #759 from BenV/fix-centos6-build
452
+ * Merge pull request #761 from looker/no-log
453
+
454
+ ## 2.12.3 / 2015-08-03
455
+
456
+ * 8 minor bugs fixed:
457
+ * Fix Capistrano 'uninitialized constant Puma' error.
458
+ * Fix some ancient and incorrect error handling code
459
+ * Fix uninitialized constant error
460
+ * Remove toplevel rack interspection, require rack on load instead
461
+ * Skip empty parts when chunking
462
+ * Switch from inject to each in config_ru_binds iteration
463
+ * Wrap SSLv3 spec in version guard.
464
+ * ruby 1.8.7 compatibility patches
465
+
466
+ * 4 PRs merged:
467
+ * Merge pull request #742 from deivid-rodriguez/fix_missing_require
468
+ * Merge pull request #743 from matthewd/skip-empty-chunks
469
+ * Merge pull request #749 from huacnlee/fix-cap-uninitialized-puma-error
470
+ * Merge pull request #751 from costi/compat_1_8_7
471
+
472
+ * 1 test fix:
473
+ * Add 1.8.7, rbx-1 (allow failures) to Travis.
474
+
475
+ ## 2.12.2 / 2015-07-17
476
+
477
+ * 2 bug fix:
478
+ * Pull over and use Rack::URLMap. Fixes #741
479
+ * Stub out peercert on JRuby for now. Fixes #739
480
+
481
+ ## 2.12.1 / 2015-07-16
482
+
483
+ * 2 bug fixes:
484
+ * Use a constant format. Fixes #737
485
+ * Use strerror for Windows sake. Fixes #733
486
+
487
+ * 1 doc change:
488
+ * typo fix: occured -> occurred
489
+
490
+ * 1 PR merged:
491
+ * Merge pull request #736 from paulanunda/paulanunda/typo-fix
492
+
493
+ ## 2.12.0 / 2015-07-14
494
+
495
+ * 13 bug fixes:
496
+ * Add thread reaping to thread pool
497
+ * Do not automatically use chunked responses when hijacked
498
+ * Do not suppress Content-Length on partial hijack
499
+ * Don't allow any exceptions to terminate a thread
500
+ * Handle ENOTCONN client disconnects when setting REMOTE_ADDR
501
+ * Handle very early exit of cluster mode. Fixes #722
502
+ * Install rack when running tests on travis to use rack/lint
503
+ * Make puma -v and -h return success exit code
504
+ * Make pumactl load config/puma.rb by default
505
+ * Pass options from pumactl properly when pruning. Fixes #694
506
+ * Remove rack dependency. Fixes #705
507
+ * Remove the default Content-Type: text/plain
508
+ * Add Client Side Certificate Auth
509
+
510
+ * 8 doc/test changes:
511
+ * Added example sourcing of environment vars
512
+ * Added tests for bind configuration on rackup file
513
+ * Fix example config text
514
+ * Update DEPLOYMENT.md
515
+ * Update Readme with example of custom error handler
516
+ * ci: Improve Travis settings
517
+ * ci: Start running tests against JRuby 9k on Travis
518
+ * ci: Convert to container infrastructure for travisci
519
+
520
+ * 2 ops changes:
521
+ * Check for system-wide rbenv
522
+ * capistrano: Add additional env when start rails
523
+
524
+ * 16 PRs merged:
525
+ * Merge pull request #686 from jjb/patch-2
526
+ * Merge pull request #693 from rob-murray/update-example-config
527
+ * Merge pull request #697 from spk/tests-bind-on-rackup-file
528
+ * Merge pull request #699 from deees/fix/require_rack_builder
529
+ * Merge pull request #701 from deepj/master
530
+ * Merge pull request #702 from Jimdo/thread-reaping
531
+ * Merge pull request #703 from deepj/travis
532
+ * Merge pull request #704 from grega/master
533
+ * Merge pull request #709 from lian/master
534
+ * Merge pull request #711 from julik/master
535
+ * Merge pull request #712 from yakara-ltd/pumactl-default-config
536
+ * Merge pull request #715 from RobotJiang/master
537
+ * Merge pull request #725 from rwz/master
538
+ * Merge pull request #726 from strenuus/handle-client-disconnect
539
+ * Merge pull request #729 from allaire/patch-1
540
+ * Merge pull request #730 from iamjarvo/container-infrastructure
541
+
542
+ ## 2.11.3 / 2015-05-18
543
+
544
+ * 5 bug fixes:
545
+ * Be sure to unlink tempfiles after a request. Fixes #690
546
+ * Coerce the key to a string before checking. (thar be symbols). Fixes #684
547
+ * Fix hang on bad SSL handshake
548
+ * Remove `enable_SSLv3` support from JRuby
549
+
550
+ * 1 PR merged:
551
+ * Merge pull request #698 from looker/hang-handshake
552
+
553
+ ## 2.11.2 / 2015-04-11
554
+
555
+ * 2 minor features:
556
+ * Add `on_worker_fork` hook, which allows to mimic Unicorn's behavior
557
+ * Add shutdown_debug config option
558
+
559
+ * 4 bug fixes:
560
+ * Fix the Config constants not being available in the DSL. Fixes #683
561
+ * Ignore multiple port declarations
562
+ * Proper 'Connection' header handling compatible with HTTP 1.[01] protocols
563
+ * Use "Puma" instead of "puma" to reporting to New Relic
564
+
565
+ * 1 doc fixes:
566
+ * Add Gitter badge.
567
+
568
+ * 6 PRs merged:
569
+ * Merge pull request #657 from schneems/schneems/puma-once-port
570
+ * Merge pull request #658 from Tomohiro/newrelic-dispatcher-default-update
571
+ * Merge pull request #662 from basecrm/connection-compatibility
572
+ * Merge pull request #664 from fxposter/on-worker-fork
573
+ * Merge pull request #667 from JuanitoFatas/doc/gemspec
574
+ * Merge pull request #672 from chulkilee/refactor
575
+
576
+ ## 2.11.1 / 2015-02-11
577
+
578
+ * 2 bug fixes:
579
+ * Avoid crash in strange restart conditions
580
+ * Inject the GEM_HOME that bundler into puma-wild's env. Fixes #653
581
+
582
+ * 2 PRs merged:
583
+ * Merge pull request #644 from bpaquet/master
584
+ * Merge pull request #646 from mkonecny/master
585
+
586
+ ## 2.11.0 / 2015-01-20
587
+
588
+ * 9 bug fixes:
589
+ * Add mode as an additional bind option to unix sockets. Fixes #630
590
+ * Advertise HTTPS properly after a hot restart
591
+ * Don't write lowlevel_error_handler to state
592
+ * Fix phased restart with stuck requests
593
+ * Handle spaces in the path properly. Fixes #622
594
+ * Set a default REMOTE_ADDR to avoid using peeraddr on unix sockets. Fixes #583
595
+ * Skip device number checking on jruby. Fixes #586
596
+ * Update extconf.rb to compile correctly on OS X
597
+ * redirect io right after daemonizing so startup errors are shown. Fixes #359
598
+
599
+ * 6 minor features:
600
+ * Add a configuration option that prevents puma from queueing requests.
601
+ * Add reload_worker_directory
602
+ * Add the ability to pass environment variables to the init script (for Jungle).
603
+ * Add the proctitle tag to the worker. Fixes #633
604
+ * Infer a proctitle tag based on the directory
605
+ * Update lowlevel error message to be more meaningful.
606
+
607
+ * 10 PRs merged:
608
+ * Merge pull request #478 from rubencaro/master
609
+ * Merge pull request #610 from kwilczynski/master
610
+ * Merge pull request #611 from jasonl/better-lowlevel-message
611
+ * Merge pull request #616 from jc00ke/master
612
+ * Merge pull request #623 from raldred/patch-1
613
+ * Merge pull request #628 from rdpoor/master
614
+ * Merge pull request #634 from deepj/master
615
+ * Merge pull request #637 from raskhadafi/patch-1
616
+ * Merge pull request #639 from ebeigarts/fix-phased-restarts
617
+ * Merge pull request #640 from codehotter/issue-612-dependent-requests-deadlock
618
+
619
+ ## 2.10.2 / 2014-11-26
620
+
621
+ * 1 bug fix:
622
+ * Conditionalize thread local cleaning, fixes perf degradation fix
623
+ The code to clean out all Thread locals adds pretty significant
624
+ overhead to a each request, so it has to be turned on explicitly
625
+ if a user needs it.
626
+
627
+ ## 2.10.1 / 2014-11-24
628
+
629
+ * 1 bug fix:
630
+ * Load the app after daemonizing because the app might start threads.
631
+
632
+ This change means errors loading the app are now reported only in the redirected
633
+ stdout/stderr.
634
+
635
+ If you're app has problems starting up, start it without daemon mode initially
636
+ to test.
637
+
638
+ ## 2.10.0 / 2014-11-23
639
+
640
+ * 3 minor features:
641
+ * Added on_worker_shutdown hook mechanism
642
+ * Allow binding to ipv6 addresses for ssl URIs
643
+ * Warn about any threads started during app preload
644
+
645
+ * 5 bug fixes:
646
+ * Clean out a threads local data before doing work
647
+ * Disable SSLv3. Fixes #591
648
+ * First change the directory to use the correct Gemfile.
649
+ * Only use config.ru binds if specified. Fixes #606
650
+ * Strongish cipher suite with FS support for some browsers
651
+
652
+ * 2 doc changes:
653
+ * Change umask examples to more permissive values
654
+ * fix typo in README.md
655
+
656
+ * 9 Merged PRs:
657
+ * Merge pull request #560 from raskhadafi/prune_bundler-bug
658
+ * Merge pull request #566 from sheltond/master
659
+ * Merge pull request #593 from andruby/patch-1
660
+ * Merge pull request #594 from hassox/thread-cleanliness
661
+ * Merge pull request #596 from burningTyger/patch-1
662
+ * Merge pull request #601 from sorentwo/friendly-umask
663
+ * Merge pull request #602 from 1334/patch-1
664
+ * Merge pull request #608 from Gu1/master
665
+ * Merge remote-tracking branch 'origin/pr/538'
666
+
667
+ ## 2.9.2 / 2014-10-25
668
+
669
+ * 8 bug fixes:
670
+ * Fix puma-wild handling a restart properly. Fixes #550
671
+ * JRuby SSL POODLE update
672
+ * Keep deprecated features warnings
673
+ * Log the current time when Puma shuts down.
674
+ * Fix cross-platform extension library detection
675
+ * Use the correct Windows names for OpenSSL.
676
+ * Better error logging during startup
677
+ * Fixing sexist error messages
678
+
679
+ * 6 PRs merged:
680
+ * Merge pull request #549 from bsnape/log-shutdown-time
681
+ * Merge pull request #553 from lowjoel/master
682
+ * Merge pull request #568 from mariuz/patch-1
683
+ * Merge pull request #578 from danielbuechele/patch-1
684
+ * Merge pull request #581 from alexch/slightly-better-logging
685
+ * Merge pull request #590 from looker/jruby_disable_sslv3
686
+
687
+ ## 2.9.1 / 2014-09-05
688
+
689
+ * 4 bug fixes:
690
+ * Cleanup the SSL related structures properly, fixes memory leak
691
+ * Fix thread spawning edge case.
692
+ * Force a worker check after a worker boots, don't wait 5sec. Fixes #574
693
+ * Implement SIGHUP for logs reopening
694
+
695
+ * 2 PRs merged:
696
+ * Merge pull request #561 from theoldreader/sighup
697
+ * Merge pull request #570 from havenwood/spawn-thread-edge-case
698
+
699
+ ## 2.9.0 / 2014-07-12
700
+
701
+ * 1 minor feature:
702
+ * Add SSL support for JRuby
703
+
704
+ * 3 bug fixes:
705
+ * Typo BUNDLER_GEMFILE -> BUNDLE_GEMFILE
706
+ * Use fast_write because we can't trust syswrite
707
+ * pumactl - do not modify original ARGV
708
+
709
+ * 4 doc fixes:
710
+ * BSD-3-Clause over BSD to avoid confusion
711
+ * Deploy doc: clarification of the GIL
712
+ * Fix typo in DEPLOYMENT.md
713
+ * Update README.md
714
+
715
+ * 6 PRs merged:
716
+ * Merge pull request #520 from misfo/patch-2
717
+ * Merge pull request #530 from looker/jruby-ssl
718
+ * Merge pull request #537 from vlmonk/patch-1
719
+ * Merge pull request #540 from allaire/patch-1
720
+ * Merge pull request #544 from chulkilee/bsd-3-clause
721
+ * Merge pull request #551 from jcxplorer/patch-1
722
+
723
+ ## 2.8.2 / 2014-04-12
724
+
725
+ * 4 bug fixes:
726
+ * During upgrade, change directory in main process instead of workers.
727
+ * Close the client properly on error
728
+ * Capistrano: fallback from phased restart to start when not started
729
+ * Allow tag option in conf file
730
+
731
+ * 4 doc fixes:
732
+ * Fix Puma daemon service README typo
733
+ * `preload_app!` instead of `preload_app`
734
+ * add preload_app and prune_bundler to example config
735
+ * allow changing of worker_timeout in config file
736
+
737
+ * 11 PRs merged:
738
+ * Merge pull request #487 from ckuttruff/master
739
+ * Merge pull request #492 from ckuttruff/master
740
+ * Merge pull request #493 from alepore/config_tag
741
+ * Merge pull request #503 from mariuz/patch-1
742
+ * Merge pull request #505 from sammcj/patch-1
743
+ * Merge pull request #506 from FlavourSys/config_worker_timeout
744
+ * Merge pull request #510 from momer/rescue-block-handle-servers-fix
745
+ * Merge pull request #511 from macool/patch-1
746
+ * Merge pull request #514 from edogawaconan/refactor_env
747
+ * Merge pull request #517 from misfo/patch-1
748
+ * Merge pull request #518 from LongMan/master
749
+
750
+ ## 2.8.1 / 2014-03-06
751
+
752
+ * 1 bug fixes:
753
+ * Run puma-wild with proper deps for prune_bundler
754
+
755
+ * 2 doc changes:
756
+ * Described the configuration file finding behavior added in 2.8.0 and how to disable it.
757
+ * Start the deployment doc
758
+
759
+ * 6 PRs merged:
760
+ * Merge pull request #471 from arthurnn/fix_test
761
+ * Merge pull request #485 from joneslee85/patch-9
762
+ * Merge pull request #486 from joshwlewis/patch-1
763
+ * Merge pull request #490 from tobinibot/patch-1
764
+ * Merge pull request #491 from brianknight10/clarify-no-config
765
+
766
+ ## 2.8.0 / 2014-02-28
767
+
768
+ * 8 minor features:
769
+ * Add ability to autoload a config file. Fixes #438
770
+ * Add ability to detect and terminate hung workers. Fixes #333
771
+ * Add booted_workers to stats response
772
+ * Add config to customize the default error message
773
+ * Add prune_bundler option
774
+ * Add worker indexes, expose them via on_worker_boot. Fixes #440
775
+ * Add pretty process name
776
+ * Show the ruby version in use
777
+
778
+ * 7 bug fixes:
779
+ * Added 408 status on timeout.
780
+ * Be more hostile with sockets that write block. Fixes #449
781
+ * Expect at_exit to exclusively remove the pidfile. Fixes #444
782
+ * Expose latency and listen backlog via bind query. Fixes #370
783
+ * JRuby raises IOError if the socket is there. Fixes #377
784
+ * Process requests fairly. Fixes #406
785
+ * Rescue SystemCallError as well. Fixes #425
786
+
787
+ * 4 doc changes:
788
+ * Add 2.1.0 to the matrix
789
+ * Add Code Climate badge to README
790
+ * Create signals.md
791
+ * Set the license to BSD. Fixes #432
792
+
793
+ * 14 PRs merged:
794
+ * Merge pull request #428 from alexeyfrank/capistrano_default_hooks
795
+ * Merge pull request #429 from namusyaka/revert-const_defined
796
+ * Merge pull request #431 from mrb/master
797
+ * Merge pull request #433 from alepore/process-name
798
+ * Merge pull request #437 from ibrahima/master
799
+ * Merge pull request #446 from sudara/master
800
+ * Merge pull request #451 from pwiebe/status_408
801
+ * Merge pull request #453 from joevandyk/patch-1
802
+ * Merge pull request #470 from arthurnn/fix_458
803
+ * Merge pull request #472 from rubencaro/master
804
+ * Merge pull request #480 from jjb/docs-on-running-test-suite
805
+ * Merge pull request #481 from schneems/master
806
+ * Merge pull request #482 from prathamesh-sonpatki/signals-doc-cleanup
807
+ * Merge pull request #483 from YotpoLtd/master
808
+
809
+ ## 2.7.1 / 2013-12-05
810
+
811
+ * 1 bug fix:
812
+
813
+ * Keep STDOUT/STDERR the right mode. Fixes #422
814
+
815
+ ## 2.7.0 / 2013-12-03
816
+
817
+ * 1 minor feature:
818
+ * Adding TTIN and TTOU to increment/decrement workers
819
+
820
+ * N bug fixes:
821
+ * Always use our Process.daemon because it's not busted
822
+ * Add capistrano restart failback to start.
823
+ * Change position of `cd` so that rvm gemset is loaded
824
+ * Clarify some platform specifics
825
+ * Do not close the pipe sockets when retrying
826
+ * Fix String#byteslice for Ruby 1.9.1, 1.9.2
827
+ * Fix compatibility with 1.8.7.
828
+ * Handle IOError closed stream in IO.select
829
+ * Increase the max URI path length to 2048 chars from 1024 chars
830
+ * Upstart jungle use config/puma.rb instead
831
+
832
+ ## 2.6.0 / 2013-09-13
833
+
834
+ * 2 minor features:
835
+ * Add support for event hooks
836
+ ** Add a hook for state transitions
837
+ * Add phased restart to capistrano recipe.
838
+
839
+ * 4 bug fixes:
840
+ * Convince workers to stop by SIGKILL after timeout
841
+ * Define RSTRING_NOT_MODIFIED for Rubinius performance
842
+ * Handle BrokenPipe, StandardError and IOError in fat_wrote and break out
843
+ * Return success status to the invoking environment
844
+
845
+ ## 2.5.1 / 2013-08-13
846
+
847
+ * 2 bug fixes:
848
+
849
+ * Keep jruby daemon mode from retrying on a hot restart
850
+ * Extract version from const.rb in gemspec
851
+
852
+ ## 2.5.0 / 2013-08-08
853
+
854
+ * 2 minor features:
855
+ * Allow configuring pumactl with config.rb
856
+ * make `pumactl restart` start puma if not running
857
+
858
+ * 6 bug fixes:
859
+ * Autodetect ruby managers and home directory in upstart script
860
+ * Convert header values to string before sending.
861
+ * Correctly report phased-restart availability
862
+ * Fix pidfile creation/deletion race on jruby daemonization
863
+ * Use integers when comparing thread counts
864
+ * Fix typo in using lopez express (raw tcp) mode
865
+
866
+ * 6 misc changes:
867
+ * Fix typo in phased-restart response
868
+ * Uncomment setuid/setgid by default in upstart
869
+ * Use Puma::Const::PUMA_VERSION in gemspec
870
+ * Update upstart comments to reflect new commandline
871
+ * Remove obsolete pumactl instructions; refer to pumactl for details
872
+ * Make Bundler used puma.gemspec version agnostic
873
+
874
+ ## 2.4.1 / 2013-08-07
875
+
876
+ * 1 experimental feature:
877
+ * Support raw tcp servers (aka Lopez Express mode)
878
+
879
+ ## 2.4.0 / 2013-07-22
880
+
881
+ * 5 minor features:
882
+ * Add PUMA_JRUBY_DAEMON_OPTS to get around agent starting twice
883
+ * Add ability to drain accept socket on shutdown
884
+ * Add port to DSL
885
+ * Adds support for using puma config file in capistrano deploys.
886
+ * Make phased_restart fallback to restart if not available
887
+
888
+ * 10 bug fixes:
889
+
890
+ * Be sure to only delete the pid in the master. Fixes #334
891
+ * Call out -C/--config flags
892
+ * Change parser symbol names to avoid clash. Fixes #179
893
+ * Convert thread pool sizes to integers
894
+ * Detect when the jruby daemon child doesn't start properly
895
+ * Fix typo in CLI help
896
+ * Improve the logging output when hijack is used. Fixes #332
897
+ * Remove unnecessary thread pool size conversions
898
+ * Setup :worker_boot as an Array. Fixes #317
899
+ * Use 127.0.0.1 as REMOTE_ADDR of unix client. Fixes #309
900
+
901
+
902
+ ## 2.3.2 / 2013-07-08
903
+
904
+ * 1 bug fix:
905
+
906
+ * Move starting control server to after daemonization.
907
+
908
+ ## 2.3.1 / 2013-07-06
909
+
910
+ * 2 bug fixes:
911
+
912
+ * Include the right files in the Manifest.
913
+ * Disable inheriting connections on restart on windows. Fixes #166
914
+
915
+ * 1 doc change:
916
+ * Better document some platform constraints
917
+
918
+ ## 2.3.0 / 2013-07-05
919
+
920
+ * 1 major bug fix:
921
+
922
+ * Stabilize control server, add support in cluster mode
923
+
924
+ * 5 minor bug fixes:
925
+
926
+ * Add ability to cleanup stale unix sockets
927
+ * Check status data better. Fixes #292
928
+ * Convert raw IO errors to ConnectionError. Fixes #274
929
+ * Fix sending Content-Type and Content-Length for no body status. Fixes #304
930
+ * Pass state path through to `pumactl start`. Fixes #287
931
+
932
+ * 2 internal changes:
933
+
934
+ * Refactored modes into seperate classes that CLI uses
935
+ * Changed CLI to take an Events object instead of stdout/stderr (API change)
936
+
937
+ ## 2.2.2 / 2013-07-02
938
+
939
+ * 1 bug fix:
940
+
941
+ * Fix restart_command in the config
942
+
943
+ ## 2.2.1 / 2013-07-02
944
+
945
+ * 1 minor feature:
946
+
947
+ * Introduce preload flag
948
+
949
+ * 1 bug fix:
950
+
951
+ * Pass custom restart command in JRuby
952
+
953
+ ## 2.2.0 / 2013-07-01
954
+
955
+ * 1 major feature:
956
+
957
+ * Add ability to preload rack app
958
+
959
+ * 2 minor bugfixes:
960
+
961
+ * Don't leak info when not in development. Fixes #256
962
+ * Load the app, then bind the ports
963
+
964
+ ## 2.1.1 / 2013-06-20
965
+
966
+ * 2 minor bug fixes:
967
+
968
+ * Fix daemonization on jruby
969
+ * Load the application before daemonizing. Fixes #285
970
+
971
+ ## 2.1.0 / 2013-06-18
972
+
973
+ * 3 minor features:
974
+ * Allow listening socket to be configured via Capistrano variable
975
+ * Output results from 'stat's command when using pumactl
976
+ * Support systemd socket activation
977
+
978
+ * 15 bug fixes:
979
+ * Deal with pipes closing while stopping. Fixes #270
980
+ * Error out early if there is no app configured
981
+ * Handle ConnectionError rather than the lowlevel exceptions
982
+ * tune with `-C` config file and `on_worker_boot`
983
+ * use `-w`
984
+ * Fixed some typos in upstart scripts
985
+ * Make sure to use bytesize instead of size (MiniSSL write)
986
+ * Fix an error in puma-manager.conf
987
+ * fix: stop leaking sockets on restart (affects ruby 1.9.3 or before)
988
+ * Ignore errors on the cross-thread pipe. Fixes #246
989
+ * Ignore errors while uncorking the socket (it might already be closed)
990
+ * Ignore the body on a HEAD request. Fixes #278
991
+ * Handle all engine data when possible. Fixes #251.
992
+ * Handle all read exceptions properly. Fixes #252
993
+ * Handle errors from the server better
994
+
995
+ * 3 doc changes:
996
+ * Add note about on_worker_boot hook
997
+ * Add some documentation for Clustered mode
998
+ * Added quotes to /etc/puma.conf
999
+
1000
+ ## 2.0.1 / 2013-04-30
1001
+
1002
+ * 1 bug fix:
1003
+
1004
+ * Fix not starting on JRuby properly
1005
+
1006
+ ## 2.0.0 / 2013-04-29
1007
+
1008
+ RailsConf 2013 edition!
1009
+
1010
+ * 2 doc changes:
1011
+ * Start with rackup -s Puma, NOT rackup -s puma.
1012
+ * Minor doc fixes in the README.md, Capistrano section
1013
+
1014
+ * 2 bug fixes:
1015
+ * Fix reading RACK_ENV properly. Fixes #234
1016
+ * Make cap recipe handle tmp/sockets; fixes #228
1017
+
1018
+ * 3 minor changes:
1019
+ * Fix capistrano recipe
1020
+ * Fix stdout/stderr logs to sync outputs
1021
+ * allow binding to IPv6 addresses
1022
+
1023
+ ## 2.0.0.b7 / 2013-03-18
1024
+
1025
+ * 5 minor enhancements:
1026
+
1027
+ * Add -q option for :start
1028
+ * Add -V, --version
1029
+ * Add default Rack handler helper
1030
+ * Upstart support
1031
+ * Set worker directory from configuration file
1032
+
1033
+ * 12 bug fixes:
1034
+
1035
+ * Close the binder in the right place. Fixes #192
1036
+ * Handle early term in workers. Fixes #206
1037
+ * Make sure that the default port is 80 when the request doesn't include HTTP_X_FORWARDED_PROTO.
1038
+ * Prevent Errno::EBADF errors on restart when running ruby 2.0
1039
+ * Record the proper @master_pid
1040
+ * Respect the header HTTP_X_FORWARDED_PROTO when the host doesn't include a port number.
1041
+ * Retry EAGAIN/EWOULDBLOCK during syswrite
1042
+ * Run exec properly to restart. Fixes #154
1043
+ * Set Rack run_once to false
1044
+ * Syncronize all access to @timeouts. Fixes #208
1045
+ * Write out the state post-daemonize. Fixes #189
1046
+ * Prevent crash when all workers are gone
1047
+
1048
+ ## 2.0.0.b6 / 2013-02-06
1049
+
1050
+ * 2 minor enhancements:
1051
+
1052
+ * Add hook for running when a worker boots
1053
+ * Advertise the Configuration object for apps to use.
1054
+
1055
+ * 1 bug fix:
1056
+
1057
+ * Change directory in working during upgrade. Fixes #185
1058
+
1059
+ ## 2.0.0.b5 / 2013-02-05
1060
+
1061
+ * 2 major features:
1062
+ * Add phased worker upgrade
1063
+ * Add support for the rack hijack protocol
1064
+
1065
+ * 2 minor features:
1066
+ * Add -R to specify the restart command
1067
+ * Add config file option to specify the restart command
1068
+
1069
+ * 5 bug fixes:
1070
+ * Cleanup pipes properly. Fixes #182
1071
+ * Daemonize earlier so that we don't lose app threads. Fixes #183
1072
+ * Drain the notification pipe. Fixes #176, thanks @cryo28
1073
+ * Move write_pid to after we daemonize. Fixes #180
1074
+ * Redirect IO properly and emit message for checkpointing
1075
+
1076
+ ## 2.0.0.b4 / 2012-12-12
1077
+
1078
+ * 4 bug fixes:
1079
+ * Properly check #syswrite's value for variable sized buffers. Fixes #170
1080
+ * Shutdown status server properly
1081
+ * Handle char vs byte and mixing syswrite with write properly
1082
+ * made MiniSSL validate key/cert file existence
1083
+
1084
+ ## 2.0.0.b3 / 2012-11-22
1085
+
1086
+ * 1 bug fix:
1087
+ * Package right files in gem
1088
+
1089
+ ## 2.0.0.b2 / 2012-11-18
1090
+ * 5 minor feature:
1091
+ * Now Puma is bundled with an capistrano recipe. Just require
1092
+ 'puma/capistrano' in you deploy.rb
1093
+ * Only inject CommonLogger in development mode
1094
+ * Add -p option to pumactl
1095
+ * Add ability to use pumactl to start a server
1096
+ * Add options to daemonize puma
1097
+
1098
+ * 7 bug fixes:
1099
+ * Reset the IOBuffer properly. Fixes #148
1100
+ * Shutdown gracefully on JRuby with Ctrl-C
1101
+ * Various methods to get newrelic to start. Fixes #128
1102
+ * fixing syntax error at capistrano recipe
1103
+ * Force ECONNRESET when read returns nil
1104
+ * Be sure to empty the drain the todo before shutting down. Fixes #155
1105
+ * allow for alternate locations for status app
1106
+
1107
+ ## 2.0.0.b1 / 2012-09-11
1108
+
1109
+ * 1 major feature:
1110
+ * Optional worker process mode (-w) to allow for process scaling in
1111
+ addition to thread scaling
1112
+
1113
+ * 1 bug fix:
1114
+ * Introduce Puma::MiniSSL to be able to properly control doing
1115
+ nonblocking SSL
1116
+
1117
+ NOTE: SSL support in JRuby is not supported at present. Support will
1118
+ be added back in a future date when a java Puma::MiniSSL is added.
1119
+
1120
+ ## 1.6.3 / 2012-09-04
1121
+
1122
+ * 1 bug fix:
1123
+ * Close sockets waiting in the reactor when a hot restart is performed
1124
+ so that browsers reconnect on the next request
1125
+
1126
+ ## 1.6.2 / 2012-08-27
1127
+
1128
+ * 1 bug fix:
1129
+ * Rescue StandardError instead of IOError to handle SystemCallErrors
1130
+ as well as other application exceptions inside the reactor.
1131
+
1132
+ ## 1.6.1 / 2012-07-23
1133
+
1134
+ * 1 packaging bug fixed:
1135
+ * Include missing files
1136
+
1137
+ ## 1.6.0 / 2012-07-23
1138
+
1139
+ * 1 major bug fix:
1140
+ * Prevent slow clients from starving the server by introducing a
1141
+ dedicated IO reactor thread. Credit for reporting goes to @meh.
1142
+
1143
+ ## 1.5.0 / 2012-07-19
1144
+
1145
+ * 7 contributors to this release:
1146
+ * Christian Mayer
1147
+ * Darío Javier Cravero
1148
+ * Dirkjan Bussink
1149
+ * Gianluca Padovani
1150
+ * Santiago Pastorino
1151
+ * Thibault Jouan
1152
+ * tomykaira
1153
+
1154
+ * 6 bug fixes:
1155
+ * Define RSTRING_NOT_MODIFIED for Rubinius
1156
+ * Convert status to integer. Fixes #123
1157
+ * Delete pidfile when stopping the server
1158
+ * Allow compilation with -Werror=format-security option
1159
+ * Fix wrong HTTP version for a HTTP/1.0 request
1160
+ * Use String#bytesize instead of String#length
1161
+
1162
+ * 3 minor features:
1163
+ * Added support for setting RACK_ENV via the CLI, config file, and rack app
1164
+ * Allow Server#run to run sync. Fixes #111
1165
+ * Puma can now run on windows
1166
+
1167
+ ## 1.4.0 / 2012-06-04
1168
+
1169
+ * 1 bug fix:
1170
+ * SCRIPT_NAME should be passed from env to allow mounting apps
1171
+
1172
+ * 1 experimental feature:
1173
+ * Add puma.socket key for direct socket access
1174
+
1175
+ ## 1.3.1 / 2012-05-15
1176
+
1177
+ * 2 bug fixes:
1178
+ * use #bytesize instead of #length for Content-Length header
1179
+ * Use StringIO properly. Fixes #98
1180
+
1181
+ ## 1.3.0 / 2012-05-08
1182
+
1183
+ * 2 minor features:
1184
+ * Return valid Rack responses (passes Lint) from status server
1185
+ * Add -I option to specify $LOAD_PATH directories
1186
+
1187
+ * 4 bug fixes:
1188
+ * Don't join the server thread inside the signal handle. Fixes #94
1189
+ * Make NullIO#read mimic IO#read
1190
+ * Only stop the status server if it's started. Fixes #84
1191
+ * Set RACK_ENV early in cli also. Fixes #78
1192
+
1193
+ * 1 new contributor:
1194
+ * Jesse Cooke
1195
+
1196
+ ## 1.2.2 / 2012-04-28
1197
+
1198
+ * 4 bug fixes:
1199
+
1200
+ * Report a lowlevel error to stderr
1201
+ * Set a fallback SERVER_NAME and SERVER_PORT
1202
+ * Keep the encoding of the body correct. Fixes #79
1203
+ * show error.to_s along with backtrace for low-level error
1204
+
1205
+ ## 1.2.1 / 2012-04-11
1206
+
1207
+ 1 bug fix:
1208
+
1209
+ * Fix rack.url_scheme for SSL servers. Fixes #65
1210
+
1211
+ ## 1.2.0 / 2012-04-11
1212
+
1213
+ 1 major feature:
1214
+
1215
+ * When possible, the internal restart does a "hot restart" meaning
1216
+ the server sockets remains open, so no connections are lost.
1217
+
1218
+ 1 minor feature:
1219
+
1220
+ * More helpful fallback error message
1221
+
1222
+ 6 bug fixes:
1223
+
1224
+ * Pass the proper args to unknown_error. Fixes #54, #58
1225
+ * Stop the control server before restarting. Fixes #61
1226
+ * Fix reporting https only on a true SSL connection
1227
+ * Set the default content type to 'text/plain'. Fixes #63
1228
+ * Use REUSEADDR. Fixes #60
1229
+ * Shutdown gracefully on SIGTERM. Fixes #53
1230
+
1231
+ 2 new contributors:
1232
+
1233
+ * Seamus Abshere
1234
+ * Steve Richert
1235
+
1236
+ ## 1.1.1 / 2012-03-30
1237
+
1238
+ 1 bugfix:
1239
+
1240
+ * Include puma/compat.rb in the gem (oops!)
1241
+
1242
+ ## 1.1.0 / 2012-03-30
1243
+
1244
+ 1 bugfix:
1245
+
1246
+ * Make sure that the unix socket has the perms 0777 by default
1247
+
1248
+ 1 minor feature:
1249
+
1250
+ * Add umask param to the unix:// bind to set the umask
1251
+
1252
+ ## 1.0.0 / 2012-03-29
1253
+
1254
+ * Released!