Mi dispiace se sembra una domanda stupida, perché sembra essere una di quelle cose "no duh", ma qualcuno può spiegarmi perché Rails ha bisogno del proprio server (Mongrel, WEBrick, mod_rails, ecc.) E non puoi semplicemente usare mod_ruby?Perché Rails non può funzionare con mod_ruby?
risposta
Tutte le istanze di apache che eseguono mod_ruby condividono un interprete Ruby. Ciò significa che non può essere utilizzato affatto su host condivisi o in qualsiasi ambiente in cui vi siano più applicazioni Rails in esecuzione per macchina. In potrebbe essere possibile eseguire più copie della stessa applicazione su una macchina, ma si potrebbe anche facilmente incontrare difficoltà a rintracciare i bug. Poiché le rotaie sono a thread singolo, eseguire solo un processo di ruby per macchina è impensabile.
Inoltre, non funziona altrettanto bene.
Per una più in discussione approfondita, controlla this Phusion employee's blog
"mod_ruby utilizza un interprete per ogni processo di Apache, il che significa che le applicazioni passeggiata in tutto l'altro in spazi dei nomi. Almeno per Rails, che non è accettabile , quindi è 1 app per installazione Apache se vuoi mod_ruby. " - David Heinemeier Hansson
Ora che è stato deriso un po ', se si vuole ancora di usarlo, controllare il mod_ruby FAQ
Dreamhost ha cercato di includere rubino nel loro ambiente di hosting, questo dal loro blog sulle loro conclusioni da questo sforzo .
È già stato risposto che mod_ruby risulta in un interprete Ruby condiviso, ma il motivo per cui questo è particolarmente problematico è che significa che le classi si sovrappongono l'una sull'altra. Ad esempio, considera ActiveRecord :: Base che definisce una connessione a un determinato database. Lo stato di questa classe è diverso tra le diverse applicazioni di Rails, quindi non appena si dovessero eseguire più di una applicazione Rails sullo stesso interprete, si avrà una seria guerra di classe.
Un'altra risposta ha dichiarato che Rails è a thread singolo, ma questo non è necessariamente vero a partire da Rails 2.2.2. Lascio questo come commento su quella risposta, ma sono in una camicia di forza del karma :)
- 1. perché questa funzione php cURL non può funzionare
- 2. Massive può funzionare con MySql?
- 3. non può far funzionare la relazione referenziata
- 4. Tipo nullable con inline se non può funzionare insieme?
- 5. Ruby on Rails map.root non sembra funzionare
- 6. Perché DateTime.AddHours sembra non funzionare?
- 7. boost :: bind non può funzionare con espressioni condizionali?
- 8. Can Pyserial può funzionare con dispositivi nascosti?
- 9. L'SDK Android può funzionare con JDK 1.7?
- 10. Firebase può funzionare offline con React Native?
- 11. non può ottenere phonegap device.platform per funzionare
- 12. Rails non può includere AngularJS
- 13. Google Cloud Messaging può funzionare con Facebook?
- 14. Non riesco a far funzionare UJS in Rails 3.1
- 15. Perché mkdir non riesce a funzionare con tilde (~)?
- 16. Come può forse Build.VERSION_CODES funzionare?
- 17. quale versione dell'interfaccia utente jquery può funzionare con jquery 1.3.2
- 18. Perché non deve! Int() funzionare correttamente?
- 19. Rails - Il lavoro ritardato smette di funzionare
- 20. Alternativa a jquery live che può funzionare
- 21. Può Facebook JS SDK funzionare con PhoneGap/Cordova?
- 22. Il bincount numpy può funzionare con array 2D?
- 23. rails -v non può caricare tale file - rails/cli (LoadError)
- 24. Rails Tutorial - 2.5.2 Non è possibile ottenere l'esercizio validaiton funzionare
- 25. La sintassi vocale di Chrome non può funzionare offline?
- 26. Ottenere Rails has_secure_password 3.1 per funzionare bene con OmniAuth
- 27. Errore ExpressJS res.render() (JSON.stringify non può funzionare su riferimento circolare)
- 28. VS8 non può gestire file.close(); file.open() ;, perché?
- 29. Visual Studio 2008 può funzionare con Team System 2005?
- 30. OAuth può funzionare con le applicazioni per telefoni cellulari?