2013-01-15 2 views
3

나는 응용 프로그램에 대한 정보를 보여주는 페이지가있는 sinatra 응용 프로그램을 가지고 있습니다. 일부는 페이지로드시 명령을 실행하여 생성됩니다. 유니콘에서 작동 할 때 모든 것이 MacBook에서 잘 작동하며 유니콘에서 실행 중일 때 프로덕션 서버에서 모든 것이 잘 작동하지만 Apache/Passenger로 바뀌면 갑자기 명령이 반환되지 않습니다.승객을 태울 때 시스템 명령이 작동하지 않습니다.

comitters = `cd /path/to/app && git shortlog -s -n` 

이 아파치/승객 설치에서 실행까지 완벽하게 작동합니다 : 예를 들어

내가 사용 커미터의 목록을 얻을 수 있습니다.

승객에게 시스템 명령을 사용할 수없는 옵션이 있습니까?

+2

+1 "승객을 태우는 것"lol – boruch

답변

1

문제는 시스템이 명령을 찾기 위해 사용하는 $ PATH 환경 변수에 있습니다. 넌 유니콘을 쉘에서 돌릴거야? 따라서 유니콘은 쉘에서 $ PATH를 상속받습니다. 하지만 Phusion Passenger에서 시작된 app 프로세스는 Apache/Nginx에서 시작됩니다. Apache/Nginx는 일반적으로 쉘과 완전히 다른 환경 변수가있는 시스템 초기화 서비스에서 시작됩니다. 솔루션을 찾으려면 http://blog.phusion.nl/2008/12/16/passing-environment-variables-to-ruby-from-phusion-passenger/을 읽으십시오.

+0

고마워! 나는 그것이 단순한 무언가 일 줄 알았다. – Arcath

관련 문제