Defina '$ PATH' extra para Passenger ou nginx

1

Eu tenho um servidor com nginx e Passenger que serve um aplicativo Ruby on Rails. Usa o Bundler.

Em algum lugar dessa pilha, o $PATH é definido como /var/www/APPNAME/shared/bundle/ruby/1.8/bin/ . Este diretório contém, na verdade, gems executáveis.

Mas eu preciso que meu aplicativo também tenha /usr/bin disponível em $PATH . Mais específico: preciso que ele possa executar idendtify , convert e mogrify ; comandos imagemagick.

Por enquanto, criei um link simbólico para esses binários imagemagick em /var/www/APPNAME/shared/bundle/ruby/1.8/bin/ :

ls /var/www/APPNAME/shared/bundle/ruby/1.8/bin/ -ahl
#...
lrwxrwxrwx 1 root root   16 May  8 16:22 convert -> /usr/bin/convert
-rwxr-xr-x 1 ber  root  379 Jan 11 08:58 erubis
#...

É mais rápido do que uma solução real, no entanto.

Como posso atribuir diretórios extras a $PATH ? E onde devo fazer isso? Passenger, nginx, o aplicativo Rails?

    
por berkes 08.05.2013 / 22:33

1 resposta

1

As opções ruby são uma boa maneira de fazer isso. Especifique que o $ LOAD_PATH tenha / usr / bin.

-Idirectory     specify $LOAD_PATH directory (may be used more than once)

Afinal, é para isso que está lá.

Outra coisa que você pode fazer é empurrar o diretório para a variável psuedo $: global.

$:.push("/usr/bin")

Isso caberia onde quer que você tenha a personalização do seu ambiente em seu aplicativo.

Eu provavelmente faria isso para o próprio aplicativo Rails, pois é aí que você está preocupado com isso. É sobre o que você tem controle.

    
por 08.05.2013 / 23:23