blob: 0b828842fd356329b1a5636155d21f4ee979a5e2 (
plain)
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
#!/sbin/openrc-run
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
SERVER=${SVCNAME#*.}
if [ ${SERVER} != thin ]; then
CONFIG=${CONFIG:-/etc/thin/${SERVER}.yml}
else
CONFIG=${CONFIG:-/etc/thin/}
fi
NOCONFIG=${NOCONFIG:-0}
RUBY=${RUBY:-/usr/bin/ruby}
DO_BUNDLER=${DO_BUNDLER:-0}
CHDIR=${CHDIR:-}
THIN_USER=${THIN_USER:-root}
THIN_GROUP=${THIN_GROUP:-root}
THIN_PID=${THIN_PID:-/var/run/thin/thin.pid}
THIN_OPTS=${THIN_OPTS:-}
depend() {
need localmount
}
checkconfig() {
if [ -n ${CHDIR} ]; then
cd "${CHDIR}"
if [ $? -ne 0 ]; then
eerror "Cannot cd into requested directory"
return 1
fi
fi
[ ${SERVER} = thin -o ${NOCONFIG} != 0 ] && return 0
if [ ! -f ${CONFIG} ]; then
eerror "Unable to find the server configuration."
eerror "Please set the CONFIG variable in /etc/conf.d/${SVCNAME} or"
eerror "set NOCONFIG there to 1 to disable looking for a config file."
return 1
fi
}
buildargs() {
if [ ${NOCONFIG} = 0 -a ${SERVER} != thin ]; then
echo -n "-C ${CONFIG} "
fi
echo -n "${THIN_OPTS}"
}
action() {
checkconfig || return 1
[ ${DO_BUNDLER} -ne 0 ] && RUBY="${RUBY} /usr/bin/bundle exec"
if [ ${SERVER} = thin ]; then
ebegin "$2 all thin servers in ${CONFIG}"
${RUBY} /usr/bin/thin $1 $(buildargs) --all ${CONFIG}
eend $?
else
ebegin "$2 thin server ${SERVER}"
${RUBY} /usr/bin/thin $(buildargs) --tag ${SERVER} $1
eend $?
fi
}
start() {
action start 'Starting'
}
stop() {
action stop 'Stopping'
}
restart() {
action restart 'Restarting'
}
start_pre() {
# If the path to the pidfile is /var/run/thin/foo/thin.pid
# then checkpath will fail if /var/run/thin/ does not exist.
# This caught infra...
d=$(dirname ${THIN_PID})
mkdir -p "$d"
checkpath -d -m 0775 -o ${THIN_USER}:${THIN_GROUP} "$d"
}
|