My development server is on a home LAN behind a firewall, and I don’t want to make it a DNS sub-domain. I have directed my router to issue fixed IP addresses through DHCP, so I can use the IP address as part of the URL.

Setting up multiple Rails applications is pretty easy, but if you want to mix the Rails environments (developement / test / production / custom), you need to use <Directory> to configure each Rails app:

<VirtualHost *:80>
  DocumentRoot /var/www/public
  <Directory /var/www/public/RailsApp1>
    RailsEnv development
    RailsBaseURI /RailsApp1
  </Directory>
  <Directory /var/www/public/RailsApp2>
    RailsEnv production
    RailsBaseURI /RailsApp2
  </Directory>
  ErrorLog /var/log/localhost-error_log
  PassengerPoolIdleTime 0
  <Directory /var/www/public/RailsApp1/blog>
    AllowOverride All
    PassengerEnabled off
  </Directory>
</VirtualHost>

By using <Directory> you can change the behavior of each of your Rails applications as needed, including the ability to disable Passenger for non-Rails code (such as the blog shown in the example).