Eu tenho algo muito parecido com o que você tem.
Temos um aplicativo localizado em um diretório. Este aplicativo está configurado para vários clientes diferentes. A única diferença entre cada cliente é o banco de dados que eles usam. Quando configuramos, decidi que ter uma porta diferente para cada cliente não era muito bonita, portanto, adotamos uma abordagem diferente.
Eu sei que o Apache não é muito popular na cena Rails, mas ainda é um excelente software. Usamos o virtualhost baseado em nome do Apache para resolver esse problema junto com o Passenger3. Na nova versão, você pode definir um RailsEnv por virtualhost usando o mesmo diretório do aplicativo. A diretiva é chamada "PassengerAppGroupName".
Você recebe um virtualhost com algo parecido com isto:
<VirtualHost _default_:80>
ServerName preprod.xxxx.fr
DocumentRoot /var/xxxx/current/public/
TimeOut 5000
# Passenger directives
PassengerHighPerformance on
PassengerAppGroupName "preprod"
RailsEnv preprod
# Logging
ErrorLog /var/log/apache2/preprod-error.log
CustomLog /var/log/apache2/preprod-access.log combined
</VirtualHost>
Acho que este exemplo deve esclarecer as coisas. Essa solução permite separar seus aplicativos usando o host HTTP usado para se conectar a ele.
Para resumir, se os "trabalhos" tiverem a mesma base de código, você pode usar essa solução limpa IMHO.
EDIT: Em termos de desempenho, o Apache / Passenger precisa de 512MB de RAM. Eu achei que qualquer coisa abaixo disso levaria a um mau desempenho, mas YMMV. Eu não acredito que exija mais memória RAM se você adicionar mais host virtual.