Выполнить пакет exec из init.d с помощью rbenv

Я пытаюсь настроить Бога для Ruby для рабочего приложения, которое я развертываю на сервере. Идея в том, что Бог автоматически перезапустит / сообщит о состоянии моего процесса, если сервер перезапустится.

Вот скрипт init.d, над которым я работаю

#!/bin/bash
#
# god       Startup script for God monitoring tool.
#
# chkconfig: - 85 15
# description: god monitors your system
#
# Install with
#   sudo chmod +x /etc/init.d/god
#   sudo chkconfig --add god
#   sudo chkconfig god on
#

HEPHAISTOS_DIR=/home/xxx
RBENV_EXEC=/home/ec2-user/.rbenv/bin/rbenv

start() {
  sudo -u ec2-user  \
    ${RBENV_EXEC} exec bundle exec god start -c ${HEPHAISTOS_DIR}/config/god/god.rb
}

stop() {
  sudo -u ec2-user \
    ${RBENV_EXEC} exec bundle exec god stop -c ${HEPHAISTOS_DIR}/config/god/god.rb
}

status() {
  sudo -u ec2-user \
    ${RBENV_EXEC} exec bundle exec god status -c ${HEPHAISTOS_DIR}/config/god/god.rb
}

case "$1" in
    start)
      start
      ;;
    stop)
      stop
      ;;
    restart)
      stop
      start
      ;;
    status)
      status
      ;;
    *)
      echo "Usage: god {start|stop|restart|status}"
      exit 1
  ;;
esac

exit 0

В настоящее время выбрасывает

Не удалось найти каталог Gemfile или.bundle /

Если я правильно понимаю, пакет не выполняется из каталога, содержащего пакет, и вызывает эту ошибку. Как я могу сказать, что bundler должен выполняться из моего APP_DIR из сценария init.d?

Пожалуйста, обратите внимание, что раньше я использовал RVM, и я мог бы использовать этот трюк (который работал довольно хорошо)

  sudo -u ec2-user ${RVM_EXEC} in ${HEPHAISTOS_DIR} do bundle exec god start -c ${HEPHAISTOS_DIR}/config/god/god.rb

(rvm in [dir] [cmd] предоставляется rvm)

Примечание: я пытаюсь выполнить этот скрипт из ОС Amazon Linux 2

РЕДАКТИРОВАТЬ:

Похоже, что rbenv не инициализирован правильно. КОГДА В скрипте я переключаюсь на

sudo -u ec2-user cd ${HEPHAISTOS_DIR} && ${RBENV_EXEC} local 2.3.3

Там написано, что 2.3.3 не установлен, но когда я вызываю команду из оболочки входа в систему, она работает.

0 ответов

Другие вопросы по тегам