2014-06-01 15 views
3

Я установил крюк после обновления для моего проекта. У меня есть открытый репозиторий (/ var/git/myproject), который я нажимаю, и live-репозиторий (/ var/www/myproject), где работает мое приложение. Я также включил bundle install и bundle exec rake db:migrate для установки драгоценных камней и обновления db.установка пакета не работает из моего исправления после обновления

Ниже мой пост-обновление крюк

#!/bin/bash 

echo "Pulling changes into Live..." 
cd /var/www/myproject || exit 
unset GIT_DIR 
git pull origin master 

# check if ruby app 
if [ -f /var/www/myproject/Gemfile ]; 
then 
    echo " Ruby app detected..." 
    bundle install --without development test 
    bundle exec rake db:migrate # migrate database 
fi 

exec git-update-server-info 

Когда я нажимаю мои изменения, хотя я получаю следующее сообщение (обратите внимание на «расслоение команды не найден»):

[email protected]:~/www/myproject$ git push -u origin master 
[email protected]'s password: 
Counting objects: 832, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (783/783), done. 
Writing objects: 100% (832/832), 487.70 KiB, done. 
Total 832 (delta 434), reused 0 (delta 0) 
remote: Pulling changes into Live... 
remote: From /var/git/myproject 
remote: * branch   master  -> FETCH_HEAD 
remote: Ruby app detected... 
remote: hooks/post-update: line 13: bundle: command not found 
remote: hooks/post-update: line 14: bundle: command not found 
To 192.168.24.100:/var/git/myproject.git 
* [new branch]  master -> master 
Branch master set up to track remote branch master from origin. 

Почему пакет не работает? I cd в каталог приложения в сценарии. Когда я нахожусь в терминале сам и я cd в реальном времени и запускаю bundle install, он работает так, что пакет есть.

ответ

11

Ваш крючок оболочки ins't то же самое, чем тот, который вы вошли в систему (и который имеет надлежащее PATH)

Вы можете попробовать использовать в начале вашего крючка сценария:

#!/bin/bash -l 

(См this answer

параметр -l выполняет команду в регистрационной оболочке, а это значит, что он наследует свой путь и другие настройки из S адский профиль.

)

Или вы можете убедиться, что ваш сценарий получает ту же среду, чем текущая сессия, добавив в первых строках своего крюка:

$ source $HOME/.bash_profile # single user RVM setup 
$ source /etc/profile  # multi user RVM setup 

Или (последняя альтернатива) вы можно добавить (перед вызовом bundle) (для установки RVM однопользовательской)

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 
+1

вам, сэра, сделали мой день ... приветствия – lu1s

Смежные вопросы