Deployment aneb nasazení Ruby On Rails aplikací byl ještě docela nedávno achylovou patou tohoto frameworku. Projekty jako SwitchPipe hodně pomohly, ale pořád znamenaly konfigurační soubor a práci s administrací další systémové služby navíc. Jednoduše řečeno administrátorům se to nelíbilo. Od doby, kdy existuje Phusion Passanger aka mod_rails je deployment do Apache web-serveru složitý asi takhle:
<VirtualHost *:80>
ServerName www.dobrykod.com
DocumentRoot /websites/dobrykod/public
</VirtualHost>
Instalace samotného mod_rails je také maximálně jednoduchá. Potřebujete být root a mít nainstalované development hlavičky pro Apache (na Debianu je to balíček apache2-dev). Pak už je třeba jenom provést tyto dva příkazy:
gem install passenger passenger-install-apache2-module
Pokud se při instalaci něco nepovede, instalátor napoví, co je potřeba doinstalovat nebo nastavit. Jakmile se podaří mod_rails nainstalovat ,je nutné provést ještě úpravu v konfiguraci Apache. Případně také poradí instalátor. Na Debianu to vypadá takto:
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.3/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.3 PassengerRuby /usr/bin/ruby1.8
Teď už jenom restart Apache a tvůj stroj je připraven pro nasazení Rails aplikací. Samotný deployment nyní probíhá zhruba stejně jako u PHP. Aplikaci prostě nahraješ do určeného adresáře a ono to funguje. Jelikož si mod_rails nasosá většinu aplikace do paměti, je potřeba jej po změně kódu restartovat. To se udělá také jednoduše:
touch tmp/restart.txt
A nebojte, zrestartují se jenom procesy pro daný VirtualHost. Celé se to samozřejmě dá lehce zaintegrovat do Capistrano deployovacích skriptů. Více v oficiálním manuálu.