2011-11-26 12 views
10

Sto imparando Ruby on Rails. Al momento sto eseguendo il mio sito solo localmente con rails server nel terminale OS X. Cosa cambia quando un sito di Rails viene eseguito su una scatola di produzione?Esecuzione di un sito Rails: sviluppo vs produzione

  • Il sito è ancora avviato con rails server?
  • Eventuali differenze con l'impostazione del db?

Nota: Io corro Rails 3.

+0

Possibile duplicato: http: // stackoverflow.it/questions/1949229/change-a-rails-app-to-production –

+1

@ Black, per me questo non sembra un duplicato della domanda che hai collegato. – Andrew

+0

È necessario aggiungere il parametro di produzione 'rails server -e production' – abhinav

risposta

16

Un'applicazione Rails può essere eseguito nella produzione chiamare rails server -e production, anche se il 99% del tempo sarete servendo su qualcosa come passeggero o sottile, invece di WEBrick, il che significa che esiste un comando diverso per avviare il server. (thin start -e production per esempio)

Questa è una domanda complicata, ma il punto migliore per iniziare a conoscere le differenze sarebbe quello di esaminare i file specifici environment.rb. All'avvio di rails, inizia con il file di ambiente che corrisponde all'ambiente chiamato, ovvero se lo si avvia in fase di sviluppo inizia caricando il file development.rb oppure, se è in produzione, carica il file production.rb. Le differenze negli ambienti sono principalmente il risultato di queste differenze nei vari file di configurazione dell'ambiente.

Fondamentalmente se un'app Rails 3.1 è in modalità di produzione, per impostazione predefinita non sarà in grado di compilare le risorse al volo e si verificherà un sacco di memorizzazione nella cache che non si sta verificando nello sviluppo. Inoltre, quando si ricevono messaggi di errore, questi verranno registrati ma non resi all'utente, verrà invece utilizzata la pagina di errore statico della directory pubblica.

Per ottenere informazioni più dettagliate su questo, vorrei suggerire la lettura delle guide competenti guide:

guide di inizializzazione: http://guides.rubyonrails.org/initialization.html

Rails Guida alla configurazione: http://guides.rubyonrails.org/configuring.html

2

Ci sono due contesti è possibile utilizzare la parola "produzione" qui. Uno di questi è in esecuzione il server in modalità produzione. È possibile farlo a livello locale da,

RAILS_ENV=production ./script/server 

La configurazione per questo viene prelevato dal config/ambienti/production.rb. Prova a confrontare questo file con config/environments/development.rb. Ci sono solo sottili differenze come le classi di cache. La modalità di sviluppo lo rende più semplice in modo che risponda a qualsiasi modifica apportata all'istante. Inoltre ci sono due diversi database (di default) che verranno utilizzati vale a dire yourproject_development e yourproject_production se si sceglie di eseguire il server in una di queste modalità.

D'altra parte, l'implementazione di binari in una scatola di produzione è qualcosa di diverso. Dovrai scegliere con attenzione il tuo server. Potrebbe essere necessario gestire uno script di distribuzione che potrebbe essere capistrano. Potrebbe anche essere necessario un sistema di bilanciamento del carico come netgear. Il database può anche richiedere una profonda considerazione come aspettativa di dimensioni, clustering master/slave ecc.,

Nota: non ho mai usato Rails 3. Questa risposta è sbilanciata verso 2.3.x.