Apache, Rails, mod_passenger e variáveis do ambiente
Recentemente precisei configurar uma aplicação Rails em um servidor Apache com o módulo Phusion Passenger. As instalações iniciais foram simples, bastando habilitar a extensão mod_passenger e configurar um virtual host para minha aplicação.
No entanto, perdi algum tempo tentando descobrir porque minhas varáveis do ambiente não estavam sendo configuradas corretamente na aplicação quando acessadas via navegador ‐ tudo funcionava perfeitamente no console.
O mod_passenger não acessa as variáveis armazenadas diretamente no ambiente do servidor. Acabei descobrindo que, para driblar essa limitação, você precisa criar um wrapper que carregue as variáveis antes de executar qualquer script ruby via Passenger.
Por exemplo, basta criar um script em /usr/local com o nome de ruby_wrapper e alterar/adicionar a seguinte configuração no arquivo de configuração do Apache para a sua aplicação:
No script você inicia as varáveis e depois executa o Ruby:
Pronto, agora você já pode acessar variáveis configuradas no servidor antes do interpretador Ruby ser executado e não precisa colocar nenhuma informação sensível diretamente no código da sua aplicação.
Mais informações no blog da Phusion.