Integrar o monit para monitorar o script daemon do Ruby em um contexto RVM sempre foi um pesadelo. Sempre tenho que passar horas tentando encontrar o comando mágico certo para iniciar meu script no contexto adequado, sem nenhum feedback significativo da monit.
Há algumas coisas que você precisa saber para facilitar essa tarefa.
Monit funciona com um ambiente muito básico definido
Você terá um caminho muito curto e nenhum $ HOME, por exemplo.
A coisa mais simples para testar seu comando é, portanto, testar seu comando de inicialização com este ambiente básico. Você pode usar o seguinte:
sudo su
env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/sh
Use o rvm-shell
O ambiente rvm depende do Bash. Se sua fonte for seu script rvm como de costume do sh, ele falhará.
A solução é usar o comando rvm-shell de seu ambiente rvm.
Defina corretamente sua variável de ambiente
Não se esqueça de que no contexto monit não haverá RAILS_ENV e nenhuma variável HOME. Não se esqueça de configurá-los se precisar deles.
Aqui está um exemplo de um comando de início válido para monit:
/usr/local/bin/rvm-shell -c 'cd /home/myuser/myapp/current; RAILS_ENV=production bundle exec script/daemon_monitor start &'