2009-05-21 21 views

risposta

7

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

2

"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 .

7

È 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 :)

Problemi correlati