Pergunta

Configurei o Passenger em desenvolvimento (Mac OS X) e funciona perfeitamente.O único problema veio depois:agora eu tenho um costume GEM_HOME path e binários do ImageMagick instalados em "/usr/local".Posso colocá-los em um dos arquivos shell rc originados e isso resolve as variáveis ​​de ambiente para processos gerados no console;mas e o Passageiro?O mesmo aplicativo não consegue encontrar minhas joias quando executado dessa maneira.

Foi útil?

Solução

Conheço duas soluções.O primeiro (documentado aqui) é essencialmente igual ao de manveru – defina a variável ENV diretamente em seu código.

A segunda é criar um wrapper em torno do interpretador Ruby que o Passenger usa e está documentado aqui (procure passageiro_com_ruby).A essência é que você crie (e aponte PassengerRuby em sua configuração do Apache para) /usr/bin/ruby_with_env, um arquivo executável que consiste em:

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

Ambos funcionam;a primeira abordagem é um pouco menos hackeada, eu acho.

Outras dicas

Antes de fazer qualquer exigência (especialmente antes de exigir rubygems), você pode fazer:

ENV['GEM_HOME'] = '/foo'

Isso mudará a variável de ambiente dentro deste processo.

Eu descobri que se você tiver privilégios de root no computador, poderá definir as variáveis ​​de ambiente necessárias no arquivo "envvars" e o apachectl executará esse arquivo antes de iniciar o Apache.

envvars normalmente está localizado no mesmo diretório onde o apachectl está localizado - no Mac OS X ele está localizado em /usr/sbin.Se você não conseguir encontrá-lo, procure na fonte do script apachectl.

Após alterar o arquivo envvars, reinicie o Apache com "apachectl -k restart".

Eu também me deparei com esse problema.Isto parece que o passageiro não transmite valores definidos usando o SetEnv diretiva Apache - o que é lamentável.

Talvez seja possível definir variáveis ​​de ambiente em seu ambiente.rb ou boot.rb (supondo que você esteja falando sobre um aplicativo Rails;Não estou familiarizado com o Rack, mas provavelmente ele possui funcionalidade semelhante)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top