-
Notifications
You must be signed in to change notification settings - Fork 1.4k
/
puma
executable file
·61 lines (54 loc) · 1.55 KB
/
puma
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/bin/sh
#
# PROVIDE: puma
. /etc/rc.subr
name="puma"
start_cmd="puma_start"
stop_cmd="puma_stop"
restart_cmd="puma_restart"
rcvar=puma_enable
required_files=/usr/local/etc/puma.conf
puma_start()
{
server_count=$(/usr/local/bin/jq ".servers[] .ruby_env" /usr/local/etc/puma.conf | wc -l)
i=0
while [ "$i" -lt "$server_count" ]; do
rb_env=$(/usr/local/bin/jq -r ".servers[$i].ruby_env" /usr/local/etc/puma.conf)
dir=$(/usr/local/bin/jq -r ".servers[$i].dir" /usr/local/etc/puma.conf)
user=$(/usr/local/bin/jq -r ".servers[$i].user" /usr/local/etc/puma.conf)
rb_ver=$(/usr/local/bin/jq -r ".servers[$i].ruby_version" /usr/local/etc/puma.conf)
case $rb_env in
"rbenv")
su - $user -c "cd $dir && rbenv shell $rb_ver && bundle exec puma -C $dir/config/puma.rb -d"
;;
*)
;;
esac
i=$(( i + 1 ))
done
}
puma_stop()
{
pkill ruby
}
puma_restart()
{
server_count=$(/usr/local/bin/jq ".servers[] .ruby_env" /usr/local/etc/puma.conf | wc -l)
i=0
while [ "$i" -lt "$server_count" ]; do
rb_env=$(/usr/local/bin/jq -r ".servers[$i].ruby_env" /usr/local/etc/puma.conf)
dir=$(/usr/local/bin/jq -r ".servers[$i].dir" /usr/local/etc/puma.conf)
user=$(/usr/local/bin/jq -r ".servers[$i].user" /usr/local/etc/puma.conf)
rb_ver=$(/usr/local/bin/jq -r ".servers[$i].ruby_version" /usr/local/etc/puma.conf)
case $rb_env in
"rbenv")
su - $user -c "cd $dir && pkill ruby && rbenv shell $ruby_version && bundle exec puma -C $dir/config/puma.rb -d"
;;
*)
;;
esac
i=$(( i + 1 ))
done
}
load_rc_config $name
run_rc_command "$1"