RVM в смешанном режиме дает ошибку при использовании в скрипте инициализации - PullRequest
0 голосов
/ 20 марта 2012

Я установил RVM в смешанном режиме, и Phusion Passenger работает в автономном режиме.

Я нашел этот скрипт инициализации для запуска моего автономного сервера Phusion Passenger при запуске: http://memcloud.com/note/show/167

Изменяя только предписанные значения, он выдавал следующую ошибку, но все равно запускал

-su: /home/myuser/.rvm/bin/rvm: No such file or directory

Я запустил which rvm в myuser и обнаружил, что RVM находится в /usr/local/rvm/bin/rvm.Поэтому я обновил переменную RVM, чтобы отразить это, и изменил RVM="$USER_HOME/.rvm/bin/rvm" на RVM="/usr/local/rvm/bin/rv".Теперь он дает мне следующее сообщение, но он все еще работает.

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

Не совсем уверен, если это проблема, если система работает, но я просто хотел бы быть уверен.

1 Ответ

0 голосов
/ 20 марта 2012

Я бы сказал, что этот скрипт неправильный, вы должны использовать что-то вроде этого:

#!/usr/bin/env bash

### BEGIN INIT INFO 
# Provides:          my-app passenger in standalone 
# Default-Start:     2 3 4 5 
# Default-Stop:      0 1 6 
# Short-Description: Start/stop my-app web site 
### END INIT INFO 

# BEGIN MINIMAL CHANGES
USER=www-data
USER_HOME=/var/www
APP_PATH=/var/www/my-app/current
GEM_SET=ruby-1.8.7-p330@my-app
ADDRESS=127.0.0.1
PORT=3000
ENVIRONMENT=production
# END MINIMAL CHANGES

RVM="/usr/local/rvm/bin/rvm"
PASSENGER="$USER_HOME/.rvm/gems/$GEM_SET/bin/passenger"
PASSENGER="cd $APP_PATH; $RVM $GEM_SET do $PASSENGER"

CMD_START="$PASSENGER start -a $ADDRESS -p $PORT -e $ENVIRONMENT -d"
CMD_STOP="$PASSENGER stop -p $PORT"

. /lib/lsb/init-functions
case "$1" in
  start)
    echo "Starting myapp passenger" 
    echo $CMD_START
    su - $USER -c "$CMD_START"
    ;;
  stop)
    echo "Stopping myapp passenger" 
    echo $CMD_STOP
    su - $USER -c "$CMD_STOP"
    ;;
  *)
    echo "Usage: $0 start|stop" >&2
    exit 3
    ;;
esac

вы также можете заменить GEM_SET=., чтобы заставить rvm использовать ruby, хранящийся в .rvmrc, но для этого требуется $USER верил, что .rvmrc ..., что также может быть сделано в этом сценарии с:

su - $USER -c "rvm rvmrc trust $APP_PATH"

, вызываемым как первая строка в start)

...