使用rbenv从init.d执行bundle exec

时间:2018-12-13 15:10:39

标签: rvm rbenv init.d god startupscript

我正在尝试为我部署到服务器的辅助应用程序设置God for 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 /目录

如果我很好理解,则不会从包含捆绑软件的目录中执行捆绑软件,并会引发此错误。如何告诉捆绑程序从init.d脚本的APP_DIR中执行?

请不要以为以前我使用的是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 OS执行此脚本

编辑:

似乎rbenv没有正确初始化。在脚本中,我切换到

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

它说没有安装2.3.3,但是当我从登录shell调用命令时,它可以工作。

0 个答案:

没有答案