2014-01-16 2 views
1

Я пытаюсь заставить контроллер рельсов вытащить последний контент из репо на бит ведро. По большей части это успех - единственная проблема, которую я испытываю при тестировании. Мне кажется, что мне кажется, что страница выводит первую строку, возвращаемую сценарием, и что, похоже, не запускает остальную часть скрипта какие-либо идеи.Запуск сценария оболочки в рельсах выводит только 1 строку

мой Баш скрипт

#!/bin/bash -l 
GIT_REPO='IMAREPO' 
TMP_GIT_CLONE=TEMPPATH 
PUBLIC_WWW=SITEPATH 

if [ -d $TMP_GIT_CLONE ]; then 
    rm -Rf $TMP_GIT_CLONE 
fi 
git clone $GIT_REPO $TMP_GIT_CLONE 
jekyll build --source $TMP_GIT_CLONE --destination $PUBLIC_WWW 
rm -Rf $TMP_GIT_CLONE 
exit 

и в контроллере рельсы я делаю

@result = %x[/var/srv/pulldevelopment.sh] 

который в свою очередь, только положить одну строку из сценария, который

Клонирование в '/ корень/TMP/мерзавца/бла' ...

+0

Есть ли что-нибудь в этом скрипте, который выводит на stderr вместо stdout? Возможно, вам нужно что-то вроде '% x [script.sh 2> & 1]' –

+0

Спасибо, что помогите найти эту проблему (но исправить ее). Кажется, что jekyll пытается работать под рельсами, вызывая проблемы с драгоценными камнями и «неверный байт» последовательность в US-ASCII Error "в моих файлах разметки. Есть ли способ не запускать jekyll под моим рельсом? –

ответ

1

Да, это, как ожидается. По умолчанию Git только печатает статус выполнения, если stderr подключен к TTY. Вы можете воспроизвести это поведение в терминале с:

$ git clone $GIT_REPO 2>&1 | cat 

Pass --progress всегда получить информацию о состоянии прогресса на поток STDERR. См. git-clone(1).

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