Выполнить пакет 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 не установлен, но когда я вызываю команду из оболочки входа в систему, она работает.