implantação monit e rvm

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 &'