J'ai une application Ruby très simple qui utilise Thin et Bundler et que je dois installer sur une boîte Ubuntu.
J'ai réussi à installer Ruby, bundler, etc. sur le serveur, mais j'ai du mal à faire fonctionner l'application elle-même.
Essentiellement, j'ai besoin d'un moyen agréable de démarrer, d'arrêter et de redémarrer l'application via capistrano.
Mon init.d script ressemble à peu près à ça :
DAEMON=/home/ubuntu/apps/my_app/shared/bundle/ruby/1.8/bin/thin
SCRIPT_NAME=/etc/init.d/thin
CONFIG_PATH=/etc/thin
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
case "$1" in
start)
cd /home/ubuntu/apps/my_app/current && bundle exec thin start -d -C /etc/thin/my_app.yml
;;
stop)
cd /home/ubuntu/apps/my_app/current && bundle exec thin stop -d -C /etc/thin/my_app.yml
;;
restart)
cd /home/ubuntu/apps/my_app/current && bundle exec thin restart -d -C /etc/thin/my_app.yml
;;
*)
echo "Usage: $SCRIPT_NAME {start|stop|restart}" >&2
exit 3
;;
esac
Cela se traduit par :
/home/ubuntu/apps/my_app/shared/bundle/ruby/1.8/gems/thin-1.3.1/lib/thin/daemonizing.rb:51:in `daemonize': uninitialized constant Thin::Daemonizable::Daemonize (NameError)
Running sudo bundle exec thin start
depuis la racine de l'application sur le serveur fonctionne parfaitement (mais pas en tant que démon).
Par conséquent, comment puis-je configurer cette application pour qu'elle démarre comme un démon et soit contrôlable via un init.d script / monit etc ?