Como faço para que o supervisord use o ambiente rbenv de um usuário?

2

Eu possuía o daemon que gostaria de ter o supervisor do sistema gerenciado. O daemon tem seu próprio usuário e, sendo feito em ruby, é o próprio ambiente rbenv. O supervisord conf para o daemon:

[program:hooks]
command=/home/hooks/bin/run.sh
user=hooks
environment=HOME='/home/hooks',USER=hooks,PATH='/home/hooks/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'

em que /home/hooks/bin/run.sh se parece com:

#!/bin/bash -e                                                                                                                                                 

rbenv init -

cd /home/carehooks/src/
bundle install

thin --timeout 0 --environment 'production' --rackup 'pwd'/config.ru --chdir examples/ start

Agora, o resultado:

# supervisorctl start hooks
hooks: ERROR (abnormal termination)

# cat /var/log/supervisor/hooks-stderr---supervisor-e2Myrz.log 
/bin/readlink: missing operand
Try '/bin/readlink --help' for more information.
/home/hooks/bin/run.sh: line 6: bundle: command not found

# cat /var/log/supervisor/hooks-stdout---supervisor-ndpvIv.log 
export PATH="/home/hooks/.rbenv/shims:${PATH}"
source "/home/hooks/.rbenv/libexec/../completions/rbenv.bash"
rbenv rehash 2>/dev/null
function rbenv() {
  command="$1"
  if [ "$#" -gt 0 ]; then
    shift
  fi

  case "$command" in
  shell)
    eval 'rbenv "sh-$command" "$@"';;
  *)
    command rbenv "$command" "$@";;
  esac
}

A configuração do meu supervisord está em falta, ou rbenv? Como posso conseguir que os dois coexistam?

    
por troutwine 09.11.2011 / 16:58

1 resposta

1

rbenv cria shims para todos os comandos (por exemplo, ruby, bundle, ...). Esses shims residem em um único diretório (~ / .rbenv / shims por padrão). Portanto, você pode chamar home/my_user/.rbenv/shims/command com parâmetros para usar a versão do comando definida por rbenv.

Encontre anexado meu conf para um programa de amostra.

[program:sample_program]
directory=/home/my_user/sample_dir
command=/home/my_user/.rbenv/shims/ruby server.rb
user=my_user
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/sample_program.out
    
por 15.04.2015 / 16:45