unicorn 5.3.1 → 5.5.1
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.
- checksums.yaml +5 -5
- data/.manifest +2 -0
- data/.olddoc.yml +1 -1
- data/Application_Timeouts +4 -4
- data/Documentation/unicorn.1.txt +1 -1
- data/Documentation/unicorn_rails.1.txt +6 -8
- data/GIT-VERSION-FILE +1 -1
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +6 -1
- data/ISSUES +10 -10
- data/LATEST +22 -102
- data/LICENSE +2 -2
- data/Links +9 -7
- data/NEWS +107 -0
- data/README +13 -6
- data/Sandbox +2 -2
- data/bin/unicorn +3 -1
- data/bin/unicorn_rails +2 -2
- data/examples/logrotate.conf +1 -1
- data/examples/nginx.conf +3 -2
- data/ext/unicorn_http/common_field_optimization.h +24 -6
- data/ext/unicorn_http/extconf.rb +30 -0
- data/ext/unicorn_http/global_variables.h +2 -2
- data/ext/unicorn_http/httpdate.c +2 -2
- data/ext/unicorn_http/unicorn_http.c +229 -219
- data/ext/unicorn_http/unicorn_http.rl +19 -9
- data/lib/unicorn/configurator.rb +13 -2
- data/lib/unicorn/http_request.rb +2 -2
- data/lib/unicorn/http_response.rb +3 -2
- data/lib/unicorn/http_server.rb +21 -23
- data/lib/unicorn/launcher.rb +1 -1
- data/lib/unicorn/socket_helper.rb +4 -3
- data/lib/unicorn/util.rb +3 -3
- data/lib/unicorn/version.rb +1 -1
- data/lib/unicorn/worker.rb +16 -2
- data/lib/unicorn.rb +26 -9
- data/man/man1/unicorn.1 +7 -5
- data/man/man1/unicorn_rails.1 +11 -11
- data/t/README +4 -4
- data/t/hijack.ru +12 -0
- data/t/t0200-rack-hijack.sh +22 -1
- data/t/t0301-no-default-middleware-ignored-in-config.sh +25 -0
- data/t/t0301.ru +13 -0
- data/test/exec/test_exec.rb +6 -7
- data/test/unit/test_ccc.rb +1 -1
- data/test/unit/test_droplet.rb +1 -1
- data/test/unit/test_http_parser.rb +16 -0
- data/test/unit/test_request.rb +10 -10
- data/test/unit/test_server.rb +5 -5
- data/test/unit/test_signals.rb +2 -2
- data/test/unit/test_socket_helper.rb +4 -4
- data/test/unit/test_util.rb +25 -0
- data/unicorn.gemspec +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c0ccf5d1fa9326ffe756484e343d135b31e82f02260901e12effb9675a94e9bb
|
4
|
+
data.tar.gz: c273ee8cc51bdad405c8c35f814b66bd7c571b9e50947e9cf974c10a8f55107f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e3efff490b9b3ed6ce63ae9a179abb1f1199f7fd0a6799a71b3e6124e1ea9c64096eafd40039a6d485e47c9b1ccd77d3479c098c04935048101bf2c02dcad9e
|
7
|
+
data.tar.gz: 7a7f7ce0fbb2295882b13e641522b112cc8a4b60a767219fdf4734487b329e8ffc45bde32e96b7064b62738ebf20ee8b9324473542d8ef2eb4bd14eac7de3f91
|
data/.manifest
CHANGED
@@ -128,6 +128,8 @@ t/t0116-client_body_buffer_size.sh
|
|
128
128
|
t/t0116.ru
|
129
129
|
t/t0200-rack-hijack.sh
|
130
130
|
t/t0300-no-default-middleware.sh
|
131
|
+
t/t0301-no-default-middleware-ignored-in-config.sh
|
132
|
+
t/t0301.ru
|
131
133
|
t/t9000-preread-input.sh
|
132
134
|
t/t9001-oob_gc.sh
|
133
135
|
t/t9002-oob_gc-path.sh
|
data/.olddoc.yml
CHANGED
data/Application_Timeouts
CHANGED
@@ -23,10 +23,10 @@ Most database adapters allow configurable timeouts.
|
|
23
23
|
Net::HTTP and Net::SMTP in the Ruby standard library allow
|
24
24
|
configurable timeouts.
|
25
25
|
|
26
|
-
Even for things as fast as {memcached}[
|
27
|
-
{dalli}[
|
28
|
-
{memcached}[
|
29
|
-
{memcache-client}[
|
26
|
+
Even for things as fast as {memcached}[https://memcached.org/],
|
27
|
+
{dalli}[https://rubygems.org/gems/dalli],
|
28
|
+
{memcached}[https://rubygems.org/gems/memcached] and
|
29
|
+
{memcache-client}[https://rubygems.org/gems/memcache-client] RubyGems all
|
30
30
|
offer configurable timeouts.
|
31
31
|
|
32
32
|
Consult the relevant documentation for the libraries you use on
|
data/Documentation/unicorn.1.txt
CHANGED
@@ -182,6 +182,6 @@ the unicorn config file.
|
|
182
182
|
* [Rackup HowTo][3]
|
183
183
|
|
184
184
|
[1]: https://bogomips.org/unicorn/
|
185
|
-
[2]:
|
185
|
+
[2]: https://www.rubydoc.info/github/rack/rack/
|
186
186
|
[3]: https://github.com/rack/rack/wiki/tutorial-rackup-howto
|
187
187
|
[4]: https://bogomips.org/unicorn/SIGNALS.html
|
@@ -12,14 +12,12 @@ unicorn_rails [-c CONFIG_FILE] [-E RAILS_ENV] [-D] [RACKUP_FILE]
|
|
12
12
|
|
13
13
|
# DESCRIPTION
|
14
14
|
|
15
|
-
A rackup(1)-like command to launch Rails
|
16
|
-
|
17
|
-
|
15
|
+
A rackup(1)-like command to launch ancient Rails (2.x and earlier)
|
16
|
+
applications using Unicorn. Rails 3 (and later) support Rack natively,
|
17
|
+
so users are encouraged to use unicorn(1) instead of unicorn_rails(1).
|
18
18
|
|
19
|
-
It is
|
20
|
-
|
21
|
-
to use unicorn(1) instead of unicorn_rails(1). Users of Rails 1.x/2.y
|
22
|
-
may also use unicorn(1) instead of unicorn_rails(1).
|
19
|
+
It is expected to be started in your Rails application root (RAILS_ROOT),
|
20
|
+
but the "working_directory" directive may be used in the CONFIG_FILE.
|
23
21
|
|
24
22
|
The outward interface resembles rackup(1), the internals and default
|
25
23
|
middleware loading is designed like the `script/server` command
|
@@ -170,6 +168,6 @@ used by Unicorn.
|
|
170
168
|
* [Rackup HowTo][3]
|
171
169
|
|
172
170
|
[1]: https://bogomips.org/unicorn/
|
173
|
-
[2]:
|
171
|
+
[2]: https://www.rubydoc.info/github/rack/rack/
|
174
172
|
[3]: https://github.com/rack/rack/wiki/tutorial-rackup-howto
|
175
173
|
[4]: https://bogomips.org/unicorn/SIGNALS.html
|
data/GIT-VERSION-FILE
CHANGED
@@ -1 +1 @@
|
|
1
|
-
GIT_VERSION = 5.
|
1
|
+
GIT_VERSION = 5.5.1
|
data/GIT-VERSION-GEN
CHANGED
data/GNUmakefile
CHANGED
@@ -175,7 +175,7 @@ doc: .document $(ext)/unicorn_http.c man html .olddoc.yml $(PLACEHOLDERS)
|
|
175
175
|
find bin lib -type f -name '*.rbc' -exec rm -f '{}' ';'
|
176
176
|
$(RM) -r doc
|
177
177
|
$(OLDDOC) prepare
|
178
|
-
$(RDOC) -f
|
178
|
+
$(RDOC) -f dark216
|
179
179
|
$(OLDDOC) merge
|
180
180
|
install -m644 COPYING doc/COPYING
|
181
181
|
install -m644 NEWS.atom.xml doc/NEWS.atom.xml
|
@@ -249,5 +249,10 @@ endif
|
|
249
249
|
$(PLACEHOLDERS):
|
250
250
|
echo olddoc_placeholder > $@
|
251
251
|
|
252
|
+
check-warnings:
|
253
|
+
@(for i in $$(git ls-files '*.rb' bin | grep -v '^setup\.rb$$'); \
|
254
|
+
do $(RUBY) --disable-gems -d -W2 -c \
|
255
|
+
$$i; done) | grep -v '^Syntax OK$$' || :
|
256
|
+
|
252
257
|
.PHONY: .FORCE-GIT-VERSION-FILE doc $(T) $(slow_tests) man
|
253
258
|
.PHONY: test-install
|
data/ISSUES
CHANGED
@@ -15,6 +15,11 @@ submit patches and/or obtain support after you have searched the
|
|
15
15
|
* The email submission port (587) is enabled on the bogomips.org MX:
|
16
16
|
https://bogomips.org/unicorn-public/20141004232241.GA23908@dcvr.yhbt.net/t/
|
17
17
|
|
18
|
+
We will never have a centralized or formal bug tracker. Instead we
|
19
|
+
can interoperate with any bug tracker which can Cc: us plain-text to
|
20
|
+
mailto:unicorn-public@bogomips.org This includes the Debian BTS
|
21
|
+
at https://bugs.debian.org/unicorn and possibly others.
|
22
|
+
|
18
23
|
If your issue is of a sensitive nature or you're just shy in public,
|
19
24
|
use anonymity tools such as Tor or Mixmaster; and rely on the public
|
20
25
|
mail archives for responses. Be sure to scrub sensitive log messages
|
@@ -34,6 +39,7 @@ https://bugs.ruby-lang.org/ and discuss+fix them on the ruby-core
|
|
34
39
|
list at mailto:ruby-core@ruby-lang.org
|
35
40
|
Subscription to post is required to ruby-core, unfortunately:
|
36
41
|
mailto:ruby-core-request@ruby-lang.org?subject=subscribe
|
42
|
+
Unofficial archives are available at: https://public-inbox.org/ruby-core/
|
37
43
|
|
38
44
|
For uncommon bugs in Rack, we may forward bugs to
|
39
45
|
mailto:rack-devel@googlegroups.com and discuss there.
|
@@ -41,6 +47,7 @@ Subscription (without any web UI or Google account) is possible via:
|
|
41
47
|
mailto:rack-devel+subscribe@googlegroups.com
|
42
48
|
Note: not everyone can use the proprietary bug tracker used by Rack,
|
43
49
|
but their mailing list remains operational.
|
50
|
+
Unofficial archives are available at: https://public-inbox.org/rack-devel/
|
44
51
|
|
45
52
|
Uncommon bugs we encounter in the Linux kernel should be Cc:-ed to the
|
46
53
|
Linux kernel mailing list (LKML) at mailto:linux-kernel@vger.kernel.org
|
@@ -49,11 +56,12 @@ and subsystem maintainers such as mailto:netdev@vger.kernel.org
|
|
49
56
|
involved with any problematic commits (including those in the
|
50
57
|
Signed-off-by: and other trailer lines). No subscription is necessary,
|
51
58
|
and the our mailing list follows the same conventions as LKML for
|
52
|
-
interopability.
|
53
|
-
ignored by most
|
59
|
+
interopability. Archives are available at https://lore.kernel.org/lkml/
|
60
|
+
There is a kernel.org Bugzilla instance, but it is ignored by most.
|
54
61
|
|
55
62
|
Likewise for any rare glibc bugs we might encounter, we should Cc:
|
56
63
|
mailto:libc-alpha@sourceware.org
|
64
|
+
Unofficial archives are available at: https://public-inbox.org/libc-alpha/
|
57
65
|
Keep in mind glibc upstream does use Bugzilla for tracking bugs:
|
58
66
|
https://sourceware.org/bugzilla/
|
59
67
|
|
@@ -86,11 +94,3 @@ Or Atom feeds:
|
|
86
94
|
The HTML archives at https://bogomips.org/unicorn-public/
|
87
95
|
also has links to per-thread Atom feeds and downloadable
|
88
96
|
mboxes.
|
89
|
-
|
90
|
-
You may optionally subscribe via plain-text email:
|
91
|
-
|
92
|
-
mailto:unicorn-public+subscribe@bogomips.org
|
93
|
-
(and confirming the auto-reply)
|
94
|
-
|
95
|
-
Just keep in mind we suck at delivering email, so using NNTP,
|
96
|
-
or Atom feeds might be a better bet...
|
data/LATEST
CHANGED
@@ -1,103 +1,23 @@
|
|
1
|
-
=== unicorn 5.
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
This also led to FreeBSD and OpenBSD portability improvements in
|
25
|
-
one of our dependencies, raindrops:
|
26
|
-
|
27
|
-
https://bogomips.org/raindrops-public/20170323024829.GA5190@dcvr/T/#u
|
28
|
-
|
29
|
-
Jeremy Evans contributed several new features. First he
|
30
|
-
implemented after_worker_exit to aid debugging:
|
31
|
-
|
32
|
-
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_exit
|
33
|
-
https://bogomips.org/unicorn-public/?q=s:after_worker_exit&d:..20170401&x=t#t
|
34
|
-
|
35
|
-
And then security-related features to isolate workers. Workers
|
36
|
-
may now chroot to drop access to the master filesystem, and the
|
37
|
-
new after_worker_ready configuration hook now exists to aid with
|
38
|
-
chroot support in workers:
|
39
|
-
|
40
|
-
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_ready
|
41
|
-
https://bogomips.org/unicorn/Unicorn/Worker.html#method-i-user
|
42
|
-
https://bogomips.org/unicorn-public/?q=s:after_worker_ready&d:..20170401&x=t#t
|
43
|
-
https://bogomips.org/unicorn-public/?q=s:chroot&d:..20170401&x=t#t
|
44
|
-
|
45
|
-
Additionally, workers may run in a completely different VM space
|
46
|
-
(nullifying preload_app and any CoW savings) with the new
|
47
|
-
worker_exec option:
|
48
|
-
|
49
|
-
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-worker_exec
|
50
|
-
https://bogomips.org/unicorn-public/?q=s:worker_exec&d:..20170401&x=t#t
|
51
|
-
|
52
|
-
There are also several improvements to FreeBSD and OpenBSD
|
53
|
-
support with the addition of these features.
|
54
|
-
|
55
|
-
shortlog of changes since v5.2.0 (2016-10-31):
|
56
|
-
|
57
|
-
Dylan Thacker-Smith (1):
|
58
|
-
Check for Socket::TCP_INFO constant before trying to get TCP_INFO
|
59
|
-
|
60
|
-
Eric Wong (30):
|
61
|
-
drop rb_str_set_len compatibility replacement
|
62
|
-
TUNING: document THP caveat for Linux users
|
63
|
-
tee_input: simplify condition for IO#write
|
64
|
-
remove response_start_sent
|
65
|
-
http_request: freeze constant strings passed IO#write
|
66
|
-
Revert "remove response_start_sent"
|
67
|
-
t/t0012-reload-empty-config.sh: access ivars directly if needed
|
68
|
-
t0011-active-unix-socket.sh: fix race condition in test
|
69
|
-
new test for check_client_connection
|
70
|
-
revert signature change to HttpServer#process_client
|
71
|
-
support "struct tcp_info" on non-Linux and Ruby 2.2+
|
72
|
-
unicorn_http: reduce rb_global_variable calls
|
73
|
-
oob_gc: rely on opt_aref_with optimization on Ruby 2.2+
|
74
|
-
http_request: reduce insn size for check_client_connection
|
75
|
-
freebsd: avoid EINVAL when setting accept filter
|
76
|
-
test-lib: expr(1) portability fix
|
77
|
-
tests: keep disabled tests defined
|
78
|
-
test_exec: SO_KEEPALIVE value only needs to be true
|
79
|
-
doc: fix links to raindrops project
|
80
|
-
http_request: support proposed Raindrops::TCP states on non-Linux
|
81
|
-
ISSUES: expand on mail archive info + subscription disclaimer
|
82
|
-
test_ccc: use a pipe to synchronize test
|
83
|
-
doc: remove private email support address
|
84
|
-
input: update documentation and hide internals.
|
85
|
-
http_server: initialize @pid ivar
|
86
|
-
gemspec: remove olddoc from build dependency
|
87
|
-
doc: add version annotations for new features
|
88
|
-
unicorn 5.3.0.pre1
|
89
|
-
doc: note after_worker_exit is also 5.3.0+
|
90
|
-
test_exec: SO_KEEPALIVE value only needs to be true (take #2)
|
91
|
-
|
92
|
-
Jeremy Evans (7):
|
93
|
-
Add after_worker_exit configuration option
|
94
|
-
Fix code example in after_worker_exit documentation
|
95
|
-
Add support for chroot to Worker#user
|
96
|
-
Add after_worker_ready configuration option
|
97
|
-
Add worker_exec configuration option
|
98
|
-
Don't pass a block for fork when forking workers
|
99
|
-
Check for SocketError on first ccc attempt
|
100
|
-
|
101
|
-
Simon Eskildsen (1):
|
102
|
-
check_client_connection: use tcp state on linux
|
1
|
+
=== unicorn 5.5.0 / 2019-03-04 00:41 UTC
|
2
|
+
|
3
|
+
Mostly identical to 5.5.0.pre1, which I didn't hear any feedback
|
4
|
+
from:
|
5
|
+
|
6
|
+
https://bogomips.org/unicorn-public/20181220222842.GA27382@dcvr/
|
7
|
+
|
8
|
+
> Jeremy Evans contributed the "default_middleware" configuration option:
|
9
|
+
>
|
10
|
+
> https://bogomips.org/unicorn-public/20180913192055.GD48926@jeremyevans.local/
|
11
|
+
>
|
12
|
+
> Jeremy also contributed the ability to use separate groups for the process
|
13
|
+
> and log files:
|
14
|
+
>
|
15
|
+
> https://bogomips.org/unicorn-public/20180913192449.GE48926@jeremyevans.local/
|
16
|
+
>
|
17
|
+
> There's also a couple of uninteresting minor optimizations and
|
18
|
+
> documentation additions.
|
19
|
+
|
20
|
+
Otherwise, there's one extra change to use
|
21
|
+
rb_gc_register_mark_object which is finally a documented part of
|
22
|
+
the Ruby C-API, but has existed since the 1.9 days.
|
103
23
|
|
data/LICENSE
CHANGED
@@ -8,8 +8,8 @@ any later version. We currently prefer the GPLv3 or later for
|
|
8
8
|
derivative works, but the GPLv2 is fine.
|
9
9
|
|
10
10
|
The complete texts of the GPLv2 and GPLv3 are below:
|
11
|
-
GPLv2 -
|
12
|
-
GPLv3 -
|
11
|
+
GPLv2 - https://www.gnu.org/licenses/gpl-2.0.txt
|
12
|
+
GPLv3 - https://www.gnu.org/licenses/gpl-3.0.txt
|
13
13
|
|
14
14
|
You may (against our _preference_) also use the Ruby 1.8 license terms
|
15
15
|
which we inherited from the original Mongrel project when we forked it:
|
data/Links
CHANGED
@@ -10,7 +10,7 @@ The unicorn project is not responsible for the content in these links.
|
|
10
10
|
Furthermore, the unicorn project has never, does not and will never endorse:
|
11
11
|
|
12
12
|
* any for-profit entities or services
|
13
|
-
* any non-{Free Software}[
|
13
|
+
* any non-{Free Software}[https://www.gnu.org/philosophy/free-sw.html]
|
14
14
|
|
15
15
|
The existence of these links does not imply endorsement of any entities
|
16
16
|
or services behind them.
|
@@ -31,26 +31,28 @@ or services behind them.
|
|
31
31
|
|
32
32
|
=== unicorn is written to work with
|
33
33
|
|
34
|
-
* {Rack}[
|
34
|
+
* {Rack}[https://rack.github.io/] - a minimal interface between webservers
|
35
35
|
supporting Ruby and Ruby frameworks
|
36
36
|
|
37
37
|
* {Ruby}[https://www.ruby-lang.org/en/] - the programming language of
|
38
38
|
Rack and unicorn
|
39
39
|
|
40
|
-
* {nginx}[
|
40
|
+
* {nginx}[https://nginx.org/] (Free versions) -
|
41
41
|
the reverse proxy for use with unicorn
|
42
42
|
|
43
43
|
=== Derivatives
|
44
44
|
|
45
|
-
* {Green Unicorn}[
|
45
|
+
* {Green Unicorn}[https://gunicorn.org/] - a Python version of unicorn
|
46
46
|
|
47
|
-
* {Starman}[
|
47
|
+
* {Starman}[https://metacpan.org/release/Starman/] - Plack/PSGI version
|
48
48
|
of unicorn
|
49
49
|
|
50
50
|
=== Prior Work
|
51
51
|
|
52
|
-
* {Mongrel}[
|
53
|
-
unicorn is based on
|
52
|
+
* {Mongrel}[https://rubygems.org/gems/mongrel] - the awesome webserver
|
53
|
+
unicorn is based on. A historical archive of the mongrel dev list
|
54
|
+
featuring early discussions of unicorn is available at:
|
55
|
+
https://bogomips.org/mongrel-devel/
|
54
56
|
|
55
57
|
* {david}[https://bogomips.org/david.git] - a tool to explain why you need
|
56
58
|
nginx in front of unicorn
|
data/NEWS
CHANGED
@@ -1,3 +1,110 @@
|
|
1
|
+
=== unicorn 5.5.0 / 2019-03-04 00:41 UTC
|
2
|
+
|
3
|
+
Mostly identical to 5.5.0.pre1, which I didn't hear any feedback
|
4
|
+
from:
|
5
|
+
|
6
|
+
https://bogomips.org/unicorn-public/20181220222842.GA27382@dcvr/
|
7
|
+
|
8
|
+
> Jeremy Evans contributed the "default_middleware" configuration option:
|
9
|
+
>
|
10
|
+
> https://bogomips.org/unicorn-public/20180913192055.GD48926@jeremyevans.local/
|
11
|
+
>
|
12
|
+
> Jeremy also contributed the ability to use separate groups for the process
|
13
|
+
> and log files:
|
14
|
+
>
|
15
|
+
> https://bogomips.org/unicorn-public/20180913192449.GE48926@jeremyevans.local/
|
16
|
+
>
|
17
|
+
> There's also a couple of uninteresting minor optimizations and
|
18
|
+
> documentation additions.
|
19
|
+
|
20
|
+
Otherwise, there's one extra change to use
|
21
|
+
rb_gc_register_mark_object which is finally a documented part of
|
22
|
+
the Ruby C-API, but has existed since the 1.9 days.
|
23
|
+
|
24
|
+
=== unicorn 5.5.0.pre1 / 2018-12-20 20:11 UTC
|
25
|
+
|
26
|
+
Jeremy Evans contributed the "default_middleware" configuration option:
|
27
|
+
|
28
|
+
https://bogomips.org/unicorn-public/20180913192055.GD48926@jeremyevans.local/
|
29
|
+
|
30
|
+
Jeremy also contributed the ability to use separate groups for the process
|
31
|
+
and log files:
|
32
|
+
|
33
|
+
https://bogomips.org/unicorn-public/20180913192449.GE48926@jeremyevans.local/
|
34
|
+
|
35
|
+
There's also a couple of uninteresting minor optimizations and
|
36
|
+
documentation additions.
|
37
|
+
|
38
|
+
Eric Wong (10):
|
39
|
+
remove random seed reset atfork
|
40
|
+
use IO#wait instead of kgio_wait_readable
|
41
|
+
Merge branch '5.4-stable'
|
42
|
+
shrink pipes under Linux
|
43
|
+
socket_helper: add hint for FreeBSD users for accf_http(9)
|
44
|
+
tests: ensure -N/--no-default-middleware not supported in config.ru
|
45
|
+
doc: update more URLs to use HTTPS and avoid redirects
|
46
|
+
deduplicate strings VM-wide in Ruby 2.5+
|
47
|
+
doc/ISSUES: add links to git clone-able mail archives of our dependencies
|
48
|
+
README: minor updates and additional disclaimer
|
49
|
+
|
50
|
+
Jeremy Evans (2):
|
51
|
+
Make Worker#user support different process primary group and log file group
|
52
|
+
Support default_middleware configuration option
|
53
|
+
|
54
|
+
=== unicorn 5.4.1 / 2018-07-23 17:13 UTC
|
55
|
+
|
56
|
+
This release quiets some warnings for Ruby 2.6 preview releases
|
57
|
+
and enables tests to pass under Ruby 1.9.3. Otherwise, nothing
|
58
|
+
interesting for Ruby 2.0..2.5 users. *YAWN*
|
59
|
+
|
60
|
+
Eric Wong (1):
|
61
|
+
quiet some mismatched indentation warnings
|
62
|
+
|
63
|
+
Fumiaki MATSUSHIMA (1):
|
64
|
+
Use IO#wait instead to fix test for Ruby 1.9
|
65
|
+
|
66
|
+
=== unicorn 5.4.0 / 2017-12-23 23:33 UTC
|
67
|
+
|
68
|
+
Rack hijack support improves as the app code can capture and use
|
69
|
+
the Rack `env' privately without copying it (to avoid clobbering
|
70
|
+
by another client). Thanks to Sam Saffron for reporting and
|
71
|
+
testing this new feature:
|
72
|
+
https://bogomips.org/unicorn-public/CAAtdryPG3nLuyo0jxfYW1YHu1Q+ZpkLkd4KdWC8vA46B5haZxw@mail.gmail.com/T/
|
73
|
+
|
74
|
+
We also now support $DEBUG being set by the Rack app (instead of
|
75
|
+
relying on the "-d" CLI switch). Thanks to James P Robinson Jr
|
76
|
+
for reporting this bug:
|
77
|
+
https://bogomips.org/unicorn-public/D6324CB4.7BC3E%25james.robinson3@cigna.com/T/
|
78
|
+
(Coincidentally, this fix will be irrelevant for Ruby 2.5
|
79
|
+
which requires 'pp' by default)
|
80
|
+
|
81
|
+
There's a few minor test cleanups and documentation updates, too.
|
82
|
+
|
83
|
+
All commits since v5.3.1 (2017-10-03):
|
84
|
+
|
85
|
+
reduce method calls with String#start_with?
|
86
|
+
require 'pp' if $DEBUG is set by Rack app
|
87
|
+
avoid reusing env on hijack
|
88
|
+
tests: cleanup some unused variable warnings
|
89
|
+
ISSUES: add a note about Debian BTS interopability
|
90
|
+
|
91
|
+
Roughly all mailing discussions since the last release:
|
92
|
+
|
93
|
+
https://bogomips.org/unicorn-public/?q=d:20171004..20171223
|
94
|
+
|
95
|
+
=== unicorn 5.3.1 / 2017-10-03 19:03 UTC
|
96
|
+
|
97
|
+
This release fixes an occasional GC problem introduced in v5.3.0
|
98
|
+
to reduce global variable overhead (commit 979ebcf91705709b)
|
99
|
+
|
100
|
+
Thanks to Xuanzhong Wei for the patch which lead to this release:
|
101
|
+
|
102
|
+
https://bogomips.org/unicorn-public/20171003182054.76392-1-azrlew@gmail.com/T/#u
|
103
|
+
https://bogomips.org/unicorn-public/20171003145718.30404-1-azrlew@gmail.com/T/#u
|
104
|
+
|
105
|
+
Xuanzhong Wei (1):
|
106
|
+
fix GC issue on rb_global_variable array
|
107
|
+
|
1
108
|
=== unicorn 5.3.0 / 2017-04-01 08:03 UTC
|
2
109
|
|
3
110
|
A couple of portability fixes from Dylan Thacker-Smith and
|
data/README
CHANGED
@@ -10,7 +10,7 @@ both the the request and response in between unicorn and slow clients.
|
|
10
10
|
|
11
11
|
* Designed for Rack, Unix, fast clients, and ease-of-debugging. We
|
12
12
|
cut out everything that is better supported by the operating system,
|
13
|
-
{nginx}[
|
13
|
+
{nginx}[https://nginx.org/] or {Rack}[https://rack.github.io/].
|
14
14
|
|
15
15
|
* Compatible with Ruby 1.9.3 and later.
|
16
16
|
unicorn 4.x remains supported for Ruby 1.8 users.
|
@@ -37,12 +37,15 @@ both the the request and response in between unicorn and slow clients.
|
|
37
37
|
You can upgrade unicorn, your entire application, libraries
|
38
38
|
and even your Ruby interpreter without dropping clients.
|
39
39
|
|
40
|
+
* transparent upgrades using systemd socket activation is
|
41
|
+
supported since unicorn 5.0
|
42
|
+
|
40
43
|
* before_fork and after_fork hooks in case your application
|
41
44
|
has special needs when dealing with forked processes. These
|
42
45
|
should not be needed when the "preload_app" directive is
|
43
46
|
false (the default).
|
44
47
|
|
45
|
-
* Can be used with copy-on-write-friendly
|
48
|
+
* Can be used with copy-on-write-friendly GC in Ruby 2.0+
|
46
49
|
to save memory (by setting "preload_app" to true).
|
47
50
|
|
48
51
|
* Able to listen on multiple interfaces including UNIX sockets,
|
@@ -55,7 +58,7 @@ both the the request and response in between unicorn and slow clients.
|
|
55
58
|
|
56
59
|
== License
|
57
60
|
|
58
|
-
unicorn is copyright 2009-
|
61
|
+
unicorn is copyright 2009-2018 by all contributors (see logs in git).
|
59
62
|
It is based on Mongrel 1.1.5.
|
60
63
|
Mongrel is copyright 2007 Zed A. Shaw and contributors.
|
61
64
|
|
@@ -77,13 +80,13 @@ You may install it via RubyGems on RubyGems.org:
|
|
77
80
|
You can get the latest source via git from the following locations
|
78
81
|
(these versions may not be stable):
|
79
82
|
|
80
|
-
|
81
|
-
|
83
|
+
https://bogomips.org/unicorn.git
|
84
|
+
https://repo.or.cz/unicorn.git (mirror)
|
82
85
|
|
83
86
|
You may browse the code from the web:
|
84
87
|
|
85
88
|
* https://bogomips.org/unicorn.git
|
86
|
-
*
|
89
|
+
* https://repo.or.cz/w/unicorn.git (gitweb)
|
87
90
|
|
88
91
|
See the HACKING guide on how to contribute and build prerelease gems
|
89
92
|
from git.
|
@@ -122,6 +125,10 @@ unicorn is designed to only serve fast clients either on the local host
|
|
122
125
|
or a fast LAN. See the PHILOSOPHY and DESIGN documents for more details
|
123
126
|
regarding this.
|
124
127
|
|
128
|
+
Due to its ability to tolerate crashes and isolate clients, unicorn
|
129
|
+
is unfortunately known to prolong the existence of bugs in applications
|
130
|
+
and libraries which run on top of it.
|
131
|
+
|
125
132
|
== Contact
|
126
133
|
|
127
134
|
All feedback (bug reports, user/development dicussion, patches, pull
|
data/Sandbox
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
Since unicorn includes executables and is usually used to start a Ruby
|
4
4
|
process, there are certain caveats to using it with tools that sandbox
|
5
5
|
RubyGems installations such as
|
6
|
-
{Bundler}[
|
6
|
+
{Bundler}[https://bundler.io/] or
|
7
7
|
{Isolate}[https://github.com/jbarnette/isolate].
|
8
8
|
|
9
9
|
== General deployment
|
@@ -66,7 +66,7 @@ before_exec hook as illustrated by https://gist.github.com/534668
|
|
66
66
|
Ruby 2.0.0 enforces FD_CLOEXEC on file descriptors by default. unicorn
|
67
67
|
has been prepared for this behavior since unicorn 4.1.0, and bundler
|
68
68
|
needs the "--keep-file-descriptors" option for "bundle exec":
|
69
|
-
|
69
|
+
https://bundler.io/man/bundle-exec.1.html
|
70
70
|
|
71
71
|
== Isolate
|
72
72
|
|
data/bin/unicorn
CHANGED
@@ -6,6 +6,7 @@ require 'optparse'
|
|
6
6
|
ENV["RACK_ENV"] ||= "development"
|
7
7
|
rackup_opts = Unicorn::Configurator::RACKUP
|
8
8
|
options = rackup_opts[:options]
|
9
|
+
set_no_default_middleware = true
|
9
10
|
|
10
11
|
op = OptionParser.new("", 24, ' ') do |opts|
|
11
12
|
cmd = File.basename($0)
|
@@ -60,7 +61,7 @@ op = OptionParser.new("", 24, ' ') do |opts|
|
|
60
61
|
|
61
62
|
opts.on("-N", "--no-default-middleware",
|
62
63
|
"do not load middleware implied by RACK_ENV") do |e|
|
63
|
-
rackup_opts[:no_default_middleware] = true
|
64
|
+
rackup_opts[:no_default_middleware] = true if set_no_default_middleware
|
64
65
|
end
|
65
66
|
|
66
67
|
opts.on("-D", "--daemonize", "run daemonized in the background") do |d|
|
@@ -110,6 +111,7 @@ op = OptionParser.new("", 24, ' ') do |opts|
|
|
110
111
|
opts.parse! ARGV
|
111
112
|
end
|
112
113
|
|
114
|
+
set_no_default_middleware = false
|
113
115
|
app = Unicorn.builder(ARGV[0] || 'config.ru', op)
|
114
116
|
op = nil
|
115
117
|
|
data/bin/unicorn_rails
CHANGED
@@ -132,11 +132,11 @@ def rails_builder(ru, op, daemonize)
|
|
132
132
|
|
133
133
|
# this lambda won't run until after forking if preload_app is false
|
134
134
|
# this runs after config file reloading
|
135
|
-
lambda do
|
135
|
+
lambda do |x, server|
|
136
136
|
# Rails 3 includes a config.ru, use it if we find it after
|
137
137
|
# working_directory is bound.
|
138
138
|
::File.exist?('config.ru') and
|
139
|
-
return Unicorn.builder('config.ru', op).call
|
139
|
+
return Unicorn.builder('config.ru', op).call(x, server)
|
140
140
|
|
141
141
|
# Load Rails and (possibly) the private version of Rack it bundles.
|
142
142
|
begin
|
data/examples/logrotate.conf
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# /etc/logrotate.d/unicorn_app on my Debian systems
|
3
3
|
#
|
4
4
|
# See the logrotate(8) manpage for more information:
|
5
|
-
#
|
5
|
+
# https://linux.die.net/man/8/logrotate
|
6
6
|
#
|
7
7
|
# public logrotate-related discussion in our archives:
|
8
8
|
# https://bogomips.org/unicorn-public/?q=logrotate
|
data/examples/nginx.conf
CHANGED
@@ -56,7 +56,8 @@ http {
|
|
56
56
|
# to configure it all in one place here for static files and also
|
57
57
|
# to disable gzip for clients who don't get gzip/deflate right.
|
58
58
|
# There are other gzip settings that may be needed used to deal with
|
59
|
-
# bad clients out there, see
|
59
|
+
# bad clients out there, see
|
60
|
+
# https://nginx.org/en/docs/http/ngx_http_gzip_module.html
|
60
61
|
gzip on;
|
61
62
|
gzip_http_version 1.0;
|
62
63
|
gzip_proxied any;
|
@@ -117,7 +118,7 @@ http {
|
|
117
118
|
|
118
119
|
location @app {
|
119
120
|
# an HTTP header important enough to have its own Wikipedia entry:
|
120
|
-
#
|
121
|
+
# https://en.wikipedia.org/wiki/X-Forwarded-For
|
121
122
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
122
123
|
|
123
124
|
# enable this if you forward HTTPS traffic to unicorn,
|