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