Credo che la gente considera un'applicazione Rails più difficile da implementare rispetto dire alcune applicazioni PHP o tali in cui basta plop il codice da qualche parte e puntare Apache o qualsiasi altra cosa a questo. Ma, come detto sopra, ora puoi farlo con Phusion Passenger.
Usiamo Nginx + passeggeri, ma non per la semplicità di implementazione. Capistrano è il nostro strumento di distribuzione preferito e, in realtà, a meno che tu non abbia un'app molto semplice, vorresti comunque qualcosa come Capistrano. Ad esempio, con il nostro Deploy, facciamo un gran numero di cose:
- run eventuali migrazioni di database
- generano note di rilascio automatico, sulla base di tutti i commit al GIT tra l'ultima implementare e questo
- notificare varie persone via email (con elenchi diversi a seconda che l'implementazione sia per il nostro ambiente di staging o produzione) - lo facciamo tramite cap_gun che si integra con Capistrano.
- Notifica nuove Relic RPM del deploy in modo che possa segnare nella nostra analisi RPM
- Segnalatemi Hoptoad del deploy, in modo che possa avere anche che i dati quando si segnalano le eventuali eccezioni
- produrre i nostri file di sitemap.xml, e ping Google per dirgli che ce n'è uno nuovo
- aggiorna i file crontab (memorizzo i nostri file crontab per ogni server nel nostro repository git, e poi sul deploy vede se c'è una nuova versione e gli aggiornamenti di conseguenza, ecc.).
- a filo/riavvio memcached
Ci sono altri modi oltre a Capistrano, ma è uno strumento collaudato, con un sacco di flessibilità, ma abbastanza semplice da configurare una configurazione di vaniglia.
Quindi, la mia opinione è che una volta entrati in qualsiasi app che è al di là solo delle app più semplici, avrete bisogno/volete fare cose diverse dal semplice aggiornamento del codice. All'inizio però, se hai solo bisogno degli aggiornamenti del codice e forse delle migrazioni di Rails, allora puoi fare cose più semplici come Passenger e code sync, o guardare strumenti come Heroku o Engine Yard dove eseguono una distribuzione facendo un clone Git (e quindi offrire alcune abilità aggiuntive).
Ulteriori risorse sono disponibili su http://rubyonrails.org/deploy –
Uso addirittura capistrano per configurare un nuovo account rails per la distribuzione automatica. Quindi dico "cap setup: fresh" e questo si occuperà di tutto come impostare un testurl, impostare un gitrepository locale e sul mio server di origine, effettuare il commit iniziale, impostare un nuovo vhost e così via .. . –