문제

개발 중인 Passenger(Mac OS X)를 설정했는데 완벽하게 작동합니다.유일한 문제는 나중에 발생했습니다.이제 나한테는 관습이 생겼어 GEM_HOME 경로 및 ImageMagick 바이너리가 설치되어 있습니다. "/usr/local".이를 소스로 제공되는 쉘 rc 파일 중 하나에 넣을 수 있으며 이는 콘솔에서 생성된 프로세스에 대한 환경 변수를 해결합니다.하지만 승객은 어떻습니까?이 방법으로 실행하면 동일한 애플리케이션이 내 보석을 찾을 수 없습니다.

도움이 되었습니까?

해결책

나는 두 가지 해결책을 알고 있습니다.첫 번째(문서화됨 여기)는 본질적으로 manveru와 동일합니다. 코드에서 ENV 변수를 직접 설정하세요.

두 번째는 Passenger가 사용하고 문서화되는 Ruby 인터프리터 주위에 래퍼를 만드는 것입니다. 여기 (passenger_with_ruby를 찾으세요).요점은 다음으로 구성된 실행 파일인 /usr/bin/ruby_with_env를 생성하고 Apache 구성에서 PassengerRuby를 지정한다는 것입니다.

#!/bin/bash
export ENV_VAR=value
/usr/bin/ruby $*

둘 다 작동합니다.전자의 접근 방식이 조금 덜 해킹적이라고 생각합니다.

다른 팁

요구사항을 수행하기 전에(특히 루비젬을 요구하기 전에) 다음을 수행할 수 있습니다.

ENV['GEM_HOME'] = '/foo'

그러면 이 프로세스 내의 환경 변수가 변경됩니다.

컴퓨터에 루트 권한이 있는 경우 "envvars" 파일에 필요한 환경 변수를 설정할 수 있으며 apachectl은 Apache를 시작하기 전에 이 파일을 실행한다는 것을 알았습니다.

envvars는 일반적으로 apachectl이 있는 동일한 디렉토리에 있습니다. Mac OS X에서는 /usr/sbin에 있습니다.찾을 수 없으면 apachectl 스크립트의 소스를 찾아보세요.

envvars 파일을 변경한 후 "apachectl -k restart"를 사용하여 Apache를 다시 시작합니다.

나도 이 문제에 직면했다.그것 나타납니다 승객은 다음을 사용하여 설정된 값을 통과하지 않습니다. SetEnv 아파치 지시문 - 불행한 일입니다.

아마도 Environment.rb 또는 boot.rb에서 환경 변수를 설정하는 것이 가능할 수도 있습니다(Rails 앱에 대해 이야기하고 있다고 가정합니다.나는 Rack에 익숙하지 않지만 아마도 비슷한 기능을 가지고 있을 것입니다)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top