Configuração Capistrano e XSendFile

Estou tentando configurar o servidor de produção Rails com Apache 2.2, Passenger 4.0.59 e XSendFile 0.12. O aplicativo é implantado via Capistrano.

O aplicativo implantado produz PDF (talvez grande) para#{Rails.root}/tmp e serve esse arquivo usandosend_file.

O problema é que o Capistrano usa links simbólicos para apontar para a versão do aplicativo atualmente implantada. O XSendFile, por outro lado, desreferencia links simbólicos e se recusa a servir um arquivo se seu local real estiver fora da raiz do documento, mesmo que seja permitido porXSendFilePath. O error.log do Apache declara:

(20023)The given path was above the root path: xsendfile: unable to find file: /resolved/path/to/file.pdf

Tudo funciona bem quando eu definirPassengerAppRoot eXSendFilePath para o local real da versão atual do aplicativo, sem links simbólicos no caminho. Mas tudo bem até a próxima implantação, o que requer reconfiguração do apache. Não é muito útil.

Como devo configurar os parâmetros de implantação e XSendFile do Capistrano para que funcionem juntos?

Eu tentei soluções comln -nFs descrito emCapistrano e X-Sendfile e emmod_xsendfile com links simbólicos mas nenhum funciona.

questionAnswers(1)

yourAnswerToTheQuestion