puma 4.3.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puma might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/History.md +1532 -0
- data/LICENSE +26 -0
- data/README.md +291 -0
- data/bin/puma +10 -0
- data/bin/puma-wild +31 -0
- data/bin/pumactl +12 -0
- data/docs/architecture.md +37 -0
- data/docs/deployment.md +111 -0
- data/docs/images/puma-connection-flow-no-reactor.png +0 -0
- data/docs/images/puma-connection-flow.png +0 -0
- data/docs/images/puma-general-arch.png +0 -0
- data/docs/nginx.md +80 -0
- data/docs/plugins.md +38 -0
- data/docs/restart.md +41 -0
- data/docs/signals.md +96 -0
- data/docs/systemd.md +290 -0
- data/docs/tcp_mode.md +96 -0
- data/ext/puma_http11/PumaHttp11Service.java +19 -0
- data/ext/puma_http11/ext_help.h +15 -0
- data/ext/puma_http11/extconf.rb +28 -0
- data/ext/puma_http11/http11_parser.c +1044 -0
- data/ext/puma_http11/http11_parser.h +65 -0
- data/ext/puma_http11/http11_parser.java.rl +145 -0
- data/ext/puma_http11/http11_parser.rl +147 -0
- data/ext/puma_http11/http11_parser_common.rl +54 -0
- data/ext/puma_http11/io_buffer.c +155 -0
- data/ext/puma_http11/mini_ssl.c +553 -0
- data/ext/puma_http11/org/jruby/puma/Http11.java +226 -0
- data/ext/puma_http11/org/jruby/puma/Http11Parser.java +455 -0
- data/ext/puma_http11/org/jruby/puma/IOBuffer.java +72 -0
- data/ext/puma_http11/org/jruby/puma/MiniSSL.java +363 -0
- data/ext/puma_http11/puma_http11.c +502 -0
- data/lib/puma.rb +31 -0
- data/lib/puma/accept_nonblock.rb +29 -0
- data/lib/puma/app/status.rb +80 -0
- data/lib/puma/binder.rb +385 -0
- data/lib/puma/cli.rb +239 -0
- data/lib/puma/client.rb +494 -0
- data/lib/puma/cluster.rb +554 -0
- data/lib/puma/commonlogger.rb +108 -0
- data/lib/puma/configuration.rb +362 -0
- data/lib/puma/const.rb +235 -0
- data/lib/puma/control_cli.rb +289 -0
- data/lib/puma/detect.rb +15 -0
- data/lib/puma/dsl.rb +740 -0
- data/lib/puma/events.rb +156 -0
- data/lib/puma/io_buffer.rb +4 -0
- data/lib/puma/jruby_restart.rb +84 -0
- data/lib/puma/launcher.rb +475 -0
- data/lib/puma/minissl.rb +278 -0
- data/lib/puma/minissl/context_builder.rb +76 -0
- data/lib/puma/null_io.rb +44 -0
- data/lib/puma/plugin.rb +120 -0
- data/lib/puma/plugin/tmp_restart.rb +36 -0
- data/lib/puma/rack/builder.rb +301 -0
- data/lib/puma/rack/urlmap.rb +93 -0
- data/lib/puma/rack_default.rb +9 -0
- data/lib/puma/reactor.rb +400 -0
- data/lib/puma/runner.rb +192 -0
- data/lib/puma/server.rb +1030 -0
- data/lib/puma/single.rb +123 -0
- data/lib/puma/state_file.rb +31 -0
- data/lib/puma/tcp_logger.rb +41 -0
- data/lib/puma/thread_pool.rb +328 -0
- data/lib/puma/util.rb +124 -0
- data/lib/rack/handler/puma.rb +115 -0
- data/tools/docker/Dockerfile +16 -0
- data/tools/jungle/README.md +19 -0
- data/tools/jungle/init.d/README.md +61 -0
- data/tools/jungle/init.d/puma +421 -0
- data/tools/jungle/init.d/run-puma +18 -0
- data/tools/jungle/rc.d/README.md +74 -0
- data/tools/jungle/rc.d/puma +61 -0
- data/tools/jungle/rc.d/puma.conf +10 -0
- data/tools/jungle/upstart/README.md +61 -0
- data/tools/jungle/upstart/puma-manager.conf +31 -0
- data/tools/jungle/upstart/puma.conf +69 -0
- data/tools/trickletest.rb +44 -0
- metadata +144 -0
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# on system boot, and root have no rbenv installed,
|
4
|
+
# after start-stop-daemon switched to current user, we have to init rbenv
|
5
|
+
if [ -d "$HOME/.rbenv/bin" ]; then
|
6
|
+
PATH="$HOME/.rbenv/bin:$HOME/.rbenv/shims:$PATH"
|
7
|
+
eval "$(rbenv init -)"
|
8
|
+
elif [ -d "/usr/local/rbenv/bin" ]; then
|
9
|
+
PATH="/usr/local/rbenv/bin:/usr/local/rbenv/shims:$PATH"
|
10
|
+
eval "$(rbenv init -)"
|
11
|
+
elif [ -f /usr/local/rvm/scripts/rvm ]; then
|
12
|
+
source /etc/profile.d/rvm.sh
|
13
|
+
elif [ -f "$HOME/.rvm/scripts/rvm" ]; then
|
14
|
+
source "$HOME/.rvm/scripts/rvm"
|
15
|
+
fi
|
16
|
+
|
17
|
+
app=$1; config=$2; log=$3;
|
18
|
+
cd $app && exec bundle exec puma -C $config >> $log 2>&1
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# Puma as a service using rc.d
|
2
|
+
|
3
|
+
Manage multilpe Puma servers as services on one box using FreeBSD's rc.d service.
|
4
|
+
|
5
|
+
## Dependencies
|
6
|
+
|
7
|
+
* `jq` - a command-line json parser is needed to parse the json in the config file
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
# Copy the puma script to the rc.d directory (make sure everyone has read/execute perms)
|
12
|
+
sudo cp puma /usr/local/etc/rc.d/
|
13
|
+
|
14
|
+
# Create an empty configuration file
|
15
|
+
sudo touch /usr/local/etc/puma.conf
|
16
|
+
|
17
|
+
# Enable the puma service
|
18
|
+
sudo echo 'puma_enable="YES"' >> /etc/rc.conf
|
19
|
+
|
20
|
+
## Managing the jungle
|
21
|
+
|
22
|
+
Puma apps are referenced in /usr/local/etc/puma.conf by default.
|
23
|
+
|
24
|
+
Start the jungle running:
|
25
|
+
|
26
|
+
`service puma start`
|
27
|
+
|
28
|
+
This script will run at boot time.
|
29
|
+
|
30
|
+
|
31
|
+
You can also stop the jungle (stops ALL puma instances) by running:
|
32
|
+
|
33
|
+
`service puma stop`
|
34
|
+
|
35
|
+
|
36
|
+
To restart the jungle:
|
37
|
+
|
38
|
+
`service puma restart`
|
39
|
+
|
40
|
+
## Conventions
|
41
|
+
|
42
|
+
* The script expects:
|
43
|
+
* a config file to exist under `config/puma.rb` in your app. E.g.: `/home/apps/my-app/config/puma.rb`.
|
44
|
+
|
45
|
+
You can always change those defaults by editing the scripts.
|
46
|
+
|
47
|
+
## Here's what a minimal app's config file should have
|
48
|
+
|
49
|
+
```
|
50
|
+
{
|
51
|
+
"servers" : [
|
52
|
+
{
|
53
|
+
"dir": "/path/to/rails/project",
|
54
|
+
"user": "deploy-user",
|
55
|
+
"ruby_version": "ruby.version",
|
56
|
+
"ruby_env": "rbenv"
|
57
|
+
}
|
58
|
+
]
|
59
|
+
}
|
60
|
+
```
|
61
|
+
|
62
|
+
## Before starting...
|
63
|
+
|
64
|
+
You need to customise `puma.conf` to:
|
65
|
+
|
66
|
+
* Set the right user your app should be running on unless you want root to execute it!
|
67
|
+
* Set the directory of the app
|
68
|
+
* Set the ruby version to execute
|
69
|
+
* Set the ruby environment (currently set to rbenv, since that is the only ruby environment currently supported)
|
70
|
+
* Add additional server instances following the scheme in the example
|
71
|
+
|
72
|
+
## Notes:
|
73
|
+
|
74
|
+
Only rbenv is currently supported.
|
@@ -0,0 +1,61 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
#
|
3
|
+
|
4
|
+
# PROVIDE: puma
|
5
|
+
|
6
|
+
. /etc/rc.subr
|
7
|
+
|
8
|
+
name="puma"
|
9
|
+
start_cmd="puma_start"
|
10
|
+
stop_cmd="puma_stop"
|
11
|
+
restart_cmd="puma_restart"
|
12
|
+
rcvar=puma_enable
|
13
|
+
required_files=/usr/local/etc/puma.conf
|
14
|
+
|
15
|
+
puma_start()
|
16
|
+
{
|
17
|
+
server_count=$(/usr/local/bin/jq ".servers[] .ruby_env" /usr/local/etc/puma.conf | wc -l)
|
18
|
+
i=0
|
19
|
+
while [ "$i" -lt "$server_count" ]; do
|
20
|
+
rb_env=$(/usr/local/bin/jq -r ".servers[$i].ruby_env" /usr/local/etc/puma.conf)
|
21
|
+
dir=$(/usr/local/bin/jq -r ".servers[$i].dir" /usr/local/etc/puma.conf)
|
22
|
+
user=$(/usr/local/bin/jq -r ".servers[$i].user" /usr/local/etc/puma.conf)
|
23
|
+
rb_ver=$(/usr/local/bin/jq -r ".servers[$i].ruby_version" /usr/local/etc/puma.conf)
|
24
|
+
case $rb_env in
|
25
|
+
"rbenv")
|
26
|
+
su - $user -c "cd $dir && rbenv shell $rb_ver && bundle exec puma -C $dir/config/puma.rb -d"
|
27
|
+
;;
|
28
|
+
*)
|
29
|
+
;;
|
30
|
+
esac
|
31
|
+
i=$(( i + 1 ))
|
32
|
+
done
|
33
|
+
}
|
34
|
+
|
35
|
+
puma_stop()
|
36
|
+
{
|
37
|
+
pkill ruby
|
38
|
+
}
|
39
|
+
|
40
|
+
puma_restart()
|
41
|
+
{
|
42
|
+
server_count=$(/usr/local/bin/jq ".servers[] .ruby_env" /usr/local/etc/puma.conf | wc -l)
|
43
|
+
i=0
|
44
|
+
while [ "$i" -lt "$server_count" ]; do
|
45
|
+
rb_env=$(/usr/local/bin/jq -r ".servers[$i].ruby_env" /usr/local/etc/puma.conf)
|
46
|
+
dir=$(/usr/local/bin/jq -r ".servers[$i].dir" /usr/local/etc/puma.conf)
|
47
|
+
user=$(/usr/local/bin/jq -r ".servers[$i].user" /usr/local/etc/puma.conf)
|
48
|
+
rb_ver=$(/usr/local/bin/jq -r ".servers[$i].ruby_version" /usr/local/etc/puma.conf)
|
49
|
+
case $rb_env in
|
50
|
+
"rbenv")
|
51
|
+
su - $user -c "cd $dir && pkill ruby && rbenv shell $ruby_version && bundle exec puma -C $dir/config/puma.rb -d"
|
52
|
+
;;
|
53
|
+
*)
|
54
|
+
;;
|
55
|
+
esac
|
56
|
+
i=$(( i + 1 ))
|
57
|
+
done
|
58
|
+
}
|
59
|
+
|
60
|
+
load_rc_config $name
|
61
|
+
run_rc_command "$1"
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# Puma as a service using Upstart
|
2
|
+
|
3
|
+
Manage multiple Puma servers as services on the same box using Ubuntu upstart.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
# Copy the scripts to services directory
|
8
|
+
sudo cp puma.conf puma-manager.conf /etc/init
|
9
|
+
|
10
|
+
# Create an empty configuration file
|
11
|
+
sudo touch /etc/puma.conf
|
12
|
+
|
13
|
+
## Managing the jungle
|
14
|
+
|
15
|
+
Puma apps are referenced in /etc/puma.conf by default. Add each app's path as a new line, e.g.:
|
16
|
+
|
17
|
+
```
|
18
|
+
/home/apps/my-cool-ruby-app
|
19
|
+
/home/apps/another-app/current
|
20
|
+
```
|
21
|
+
|
22
|
+
Start the jungle running:
|
23
|
+
|
24
|
+
`sudo start puma-manager`
|
25
|
+
|
26
|
+
This script will run at boot time.
|
27
|
+
|
28
|
+
Start a single puma like this:
|
29
|
+
|
30
|
+
`sudo start puma app=/path/to/app`
|
31
|
+
|
32
|
+
## Logs
|
33
|
+
|
34
|
+
Everything is logged by upstart, defaulting to `/var/log/upstart`.
|
35
|
+
|
36
|
+
Each puma instance is named after its directory, so for an app called `/home/apps/my-app` the log file would be `/var/log/upstart/puma-_home_apps_my-app.log`.
|
37
|
+
|
38
|
+
## Conventions
|
39
|
+
|
40
|
+
* The script expects:
|
41
|
+
* a config file to exist under `config/puma.rb` in your app. E.g.: `/home/apps/my-app/config/puma.rb`.
|
42
|
+
* a temporary folder to put the PID, socket and state files to exist called `tmp/puma`. E.g.: `/home/apps/my-app/tmp/puma`. Puma will take care of the files for you.
|
43
|
+
|
44
|
+
You can always change those defaults by editing the scripts.
|
45
|
+
|
46
|
+
## Here's what a minimal app's config file should have
|
47
|
+
|
48
|
+
```
|
49
|
+
pidfile "/path/to/app/tmp/puma/pid"
|
50
|
+
state_path "/path/to/app/tmp/puma/state"
|
51
|
+
activate_control_app
|
52
|
+
```
|
53
|
+
|
54
|
+
## Before starting...
|
55
|
+
|
56
|
+
You need to customise `puma.conf` to:
|
57
|
+
|
58
|
+
* Set the right user your app should be running on unless you want root to execute it!
|
59
|
+
* Look for `setuid apps` and `setgid apps`, uncomment those lines and replace `apps` to whatever your deployment user is.
|
60
|
+
* Replace `apps` on the paths (or set the right paths to your user's home) everywhere else.
|
61
|
+
* Uncomment the source lines for `rbenv` or `rvm` support unless you use a system wide installation of Ruby.
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# /etc/init/puma-manager.conf - manage a set of Pumas
|
2
|
+
|
3
|
+
# This example config should work with Ubuntu 12.04+. It
|
4
|
+
# allows you to manage multiple Puma instances with
|
5
|
+
# Upstart, Ubuntu's native service management tool.
|
6
|
+
#
|
7
|
+
# See puma.conf for how to manage a single Puma instance.
|
8
|
+
#
|
9
|
+
# Use "stop puma-manager" to stop all Puma instances.
|
10
|
+
# Use "start puma-manager" to start all instances.
|
11
|
+
# Use "restart puma-manager" to restart all instances.
|
12
|
+
# Crazy, right?
|
13
|
+
#
|
14
|
+
|
15
|
+
description "Manages the set of puma processes"
|
16
|
+
|
17
|
+
# This starts upon bootup and stops on shutdown
|
18
|
+
start on runlevel [2345]
|
19
|
+
stop on runlevel [06]
|
20
|
+
|
21
|
+
# Set this to the number of Puma processes you want
|
22
|
+
# to run on this machine
|
23
|
+
env PUMA_CONF="/etc/puma.conf"
|
24
|
+
|
25
|
+
pre-start script
|
26
|
+
for i in `cat $PUMA_CONF`; do
|
27
|
+
app=`echo $i | cut -d , -f 1`
|
28
|
+
logger -t "puma-manager" "Starting $app"
|
29
|
+
start puma app=$app
|
30
|
+
done
|
31
|
+
end script
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# /etc/init/puma.conf - Puma config
|
2
|
+
|
3
|
+
# This example config should work with Ubuntu 12.04+. It
|
4
|
+
# allows you to manage multiple Puma instances with
|
5
|
+
# Upstart, Ubuntu's native service management tool.
|
6
|
+
#
|
7
|
+
# See puma-manager.conf for how to manage all Puma instances at once.
|
8
|
+
#
|
9
|
+
# Save this config as /etc/init/puma.conf then manage puma with:
|
10
|
+
# sudo start puma app=PATH_TO_APP
|
11
|
+
# sudo stop puma app=PATH_TO_APP
|
12
|
+
# sudo status puma app=PATH_TO_APP
|
13
|
+
#
|
14
|
+
# or use the service command:
|
15
|
+
# sudo service puma {start,stop,restart,status}
|
16
|
+
#
|
17
|
+
|
18
|
+
description "Puma Background Worker"
|
19
|
+
|
20
|
+
# no "start on", we don't want to automatically start
|
21
|
+
stop on (stopping puma-manager or runlevel [06])
|
22
|
+
|
23
|
+
# change apps to match your deployment user if you want to use this as a less privileged user (recommended!)
|
24
|
+
setuid apps
|
25
|
+
setgid apps
|
26
|
+
|
27
|
+
respawn
|
28
|
+
respawn limit 3 30
|
29
|
+
|
30
|
+
instance ${app}
|
31
|
+
|
32
|
+
script
|
33
|
+
# this script runs in /bin/sh by default
|
34
|
+
# respawn as bash so we can source in rbenv/rvm
|
35
|
+
# quoted heredoc to tell /bin/sh not to interpret
|
36
|
+
# variables
|
37
|
+
|
38
|
+
# source ENV variables manually as Upstart doesn't, eg:
|
39
|
+
#. /etc/environment
|
40
|
+
|
41
|
+
exec /bin/bash <<'EOT'
|
42
|
+
# set HOME to the setuid user's home, there doesn't seem to be a better, portable way
|
43
|
+
export HOME="$(eval echo ~$(id -un))"
|
44
|
+
|
45
|
+
if [ -d "/usr/local/rbenv/bin" ]; then
|
46
|
+
export PATH="/usr/local/rbenv/bin:/usr/local/rbenv/shims:$PATH"
|
47
|
+
elif [ -d "$HOME/.rbenv/bin" ]; then
|
48
|
+
export PATH="$HOME/.rbenv/bin:$HOME/.rbenv/shims:$PATH"
|
49
|
+
elif [ -f /etc/profile.d/rvm.sh ]; then
|
50
|
+
source /etc/profile.d/rvm.sh
|
51
|
+
elif [ -f /usr/local/rvm/scripts/rvm ]; then
|
52
|
+
source /etc/profile.d/rvm.sh
|
53
|
+
elif [ -f "$HOME/.rvm/scripts/rvm" ]; then
|
54
|
+
source "$HOME/.rvm/scripts/rvm"
|
55
|
+
elif [ -f /usr/local/share/chruby/chruby.sh ]; then
|
56
|
+
source /usr/local/share/chruby/chruby.sh
|
57
|
+
if [ -f /usr/local/share/chruby/auto.sh ]; then
|
58
|
+
source /usr/local/share/chruby/auto.sh
|
59
|
+
fi
|
60
|
+
# if you aren't using auto, set your version here
|
61
|
+
# chruby 2.0.0
|
62
|
+
fi
|
63
|
+
|
64
|
+
cd $app
|
65
|
+
logger -t puma "Starting server: $app"
|
66
|
+
|
67
|
+
exec bundle exec puma -C config/puma.rb
|
68
|
+
EOT
|
69
|
+
end script
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'socket'
|
2
|
+
require 'stringio'
|
3
|
+
|
4
|
+
def do_test(st, chunk)
|
5
|
+
s = TCPSocket.new('127.0.0.1',ARGV[0].to_i);
|
6
|
+
req = StringIO.new(st)
|
7
|
+
nout = 0
|
8
|
+
randstop = rand(st.length / 10)
|
9
|
+
STDERR.puts "stopping after: #{randstop}"
|
10
|
+
|
11
|
+
begin
|
12
|
+
while data = req.read(chunk)
|
13
|
+
nout += s.write(data)
|
14
|
+
s.flush
|
15
|
+
sleep 0.1
|
16
|
+
if nout > randstop
|
17
|
+
STDERR.puts "BANG! after #{nout} bytes."
|
18
|
+
break
|
19
|
+
end
|
20
|
+
end
|
21
|
+
rescue Object => e
|
22
|
+
STDERR.puts "ERROR: #{e}"
|
23
|
+
ensure
|
24
|
+
s.close
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
content = "-" * (1024 * 240)
|
29
|
+
st = "GET / HTTP/1.1\r\nHost: www.zedshaw.com\r\nContent-Type: text/plain\r\nContent-Length: #{content.length}\r\n\r\n#{content}"
|
30
|
+
|
31
|
+
puts "length: #{content.length}"
|
32
|
+
|
33
|
+
threads = []
|
34
|
+
ARGV[1].to_i.times do
|
35
|
+
t = Thread.new do
|
36
|
+
size = 100
|
37
|
+
puts ">>>> #{size} sized chunks"
|
38
|
+
do_test(st, size)
|
39
|
+
end
|
40
|
+
|
41
|
+
threads << t
|
42
|
+
end
|
43
|
+
|
44
|
+
threads.each {|t| t.join}
|
metadata
ADDED
@@ -0,0 +1,144 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: puma
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 4.3.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Evan Phoenix
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-11-07 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: nio4r
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
description: Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
|
28
|
+
for Ruby/Rack applications. Puma is intended for use in both development and production
|
29
|
+
environments. It's great for highly concurrent Ruby implementations such as Rubinius
|
30
|
+
and JRuby as well as as providing process worker support to support CRuby well.
|
31
|
+
email:
|
32
|
+
- evan@phx.io
|
33
|
+
executables:
|
34
|
+
- puma
|
35
|
+
- pumactl
|
36
|
+
extensions:
|
37
|
+
- ext/puma_http11/extconf.rb
|
38
|
+
extra_rdoc_files: []
|
39
|
+
files:
|
40
|
+
- History.md
|
41
|
+
- LICENSE
|
42
|
+
- README.md
|
43
|
+
- bin/puma
|
44
|
+
- bin/puma-wild
|
45
|
+
- bin/pumactl
|
46
|
+
- docs/architecture.md
|
47
|
+
- docs/deployment.md
|
48
|
+
- docs/images/puma-connection-flow-no-reactor.png
|
49
|
+
- docs/images/puma-connection-flow.png
|
50
|
+
- docs/images/puma-general-arch.png
|
51
|
+
- docs/nginx.md
|
52
|
+
- docs/plugins.md
|
53
|
+
- docs/restart.md
|
54
|
+
- docs/signals.md
|
55
|
+
- docs/systemd.md
|
56
|
+
- docs/tcp_mode.md
|
57
|
+
- ext/puma_http11/PumaHttp11Service.java
|
58
|
+
- ext/puma_http11/ext_help.h
|
59
|
+
- ext/puma_http11/extconf.rb
|
60
|
+
- ext/puma_http11/http11_parser.c
|
61
|
+
- ext/puma_http11/http11_parser.h
|
62
|
+
- ext/puma_http11/http11_parser.java.rl
|
63
|
+
- ext/puma_http11/http11_parser.rl
|
64
|
+
- ext/puma_http11/http11_parser_common.rl
|
65
|
+
- ext/puma_http11/io_buffer.c
|
66
|
+
- ext/puma_http11/mini_ssl.c
|
67
|
+
- ext/puma_http11/org/jruby/puma/Http11.java
|
68
|
+
- ext/puma_http11/org/jruby/puma/Http11Parser.java
|
69
|
+
- ext/puma_http11/org/jruby/puma/IOBuffer.java
|
70
|
+
- ext/puma_http11/org/jruby/puma/MiniSSL.java
|
71
|
+
- ext/puma_http11/puma_http11.c
|
72
|
+
- lib/puma.rb
|
73
|
+
- lib/puma/accept_nonblock.rb
|
74
|
+
- lib/puma/app/status.rb
|
75
|
+
- lib/puma/binder.rb
|
76
|
+
- lib/puma/cli.rb
|
77
|
+
- lib/puma/client.rb
|
78
|
+
- lib/puma/cluster.rb
|
79
|
+
- lib/puma/commonlogger.rb
|
80
|
+
- lib/puma/configuration.rb
|
81
|
+
- lib/puma/const.rb
|
82
|
+
- lib/puma/control_cli.rb
|
83
|
+
- lib/puma/detect.rb
|
84
|
+
- lib/puma/dsl.rb
|
85
|
+
- lib/puma/events.rb
|
86
|
+
- lib/puma/io_buffer.rb
|
87
|
+
- lib/puma/jruby_restart.rb
|
88
|
+
- lib/puma/launcher.rb
|
89
|
+
- lib/puma/minissl.rb
|
90
|
+
- lib/puma/minissl/context_builder.rb
|
91
|
+
- lib/puma/null_io.rb
|
92
|
+
- lib/puma/plugin.rb
|
93
|
+
- lib/puma/plugin/tmp_restart.rb
|
94
|
+
- lib/puma/rack/builder.rb
|
95
|
+
- lib/puma/rack/urlmap.rb
|
96
|
+
- lib/puma/rack_default.rb
|
97
|
+
- lib/puma/reactor.rb
|
98
|
+
- lib/puma/runner.rb
|
99
|
+
- lib/puma/server.rb
|
100
|
+
- lib/puma/single.rb
|
101
|
+
- lib/puma/state_file.rb
|
102
|
+
- lib/puma/tcp_logger.rb
|
103
|
+
- lib/puma/thread_pool.rb
|
104
|
+
- lib/puma/util.rb
|
105
|
+
- lib/rack/handler/puma.rb
|
106
|
+
- tools/docker/Dockerfile
|
107
|
+
- tools/jungle/README.md
|
108
|
+
- tools/jungle/init.d/README.md
|
109
|
+
- tools/jungle/init.d/puma
|
110
|
+
- tools/jungle/init.d/run-puma
|
111
|
+
- tools/jungle/rc.d/README.md
|
112
|
+
- tools/jungle/rc.d/puma
|
113
|
+
- tools/jungle/rc.d/puma.conf
|
114
|
+
- tools/jungle/upstart/README.md
|
115
|
+
- tools/jungle/upstart/puma-manager.conf
|
116
|
+
- tools/jungle/upstart/puma.conf
|
117
|
+
- tools/trickletest.rb
|
118
|
+
homepage: http://puma.io
|
119
|
+
licenses:
|
120
|
+
- BSD-3-Clause
|
121
|
+
metadata:
|
122
|
+
msys2_mingw_dependencies: openssl
|
123
|
+
changelog_uri: https://github.com/puma/puma/blob/master/History.md
|
124
|
+
post_install_message:
|
125
|
+
rdoc_options: []
|
126
|
+
require_paths:
|
127
|
+
- lib
|
128
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '2.2'
|
133
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
138
|
+
requirements: []
|
139
|
+
rubygems_version: 3.0.3
|
140
|
+
signing_key:
|
141
|
+
specification_version: 4
|
142
|
+
summary: Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server for
|
143
|
+
Ruby/Rack applications
|
144
|
+
test_files: []
|