Warum kann Rails nicht mit mod_ruby arbeiten?

8

Es tut mir leid, wenn das wie eine dumme Frage klingt, denn es scheint eine dieser "no duh" -Dinge zu sein, aber kann mir jemand erklären, warum Rails einen eigenen Server braucht (Mongrel, WEBrick, mod_rails, etc) und kann nicht einfach mod_ruby verwenden?

    
Sasha Chedygov 21.05.2009, 23:26
quelle

3 Antworten

7

Alle Apache-Instanzen, die mod_ruby ausführen, teilen sich einen Ruby-Interpreter. Dies bedeutet, dass es auf freigegebenen Hosts oder in einer Umgebung, in der mehrere Rails-Anwendungen pro Computer ausgeführt werden, überhaupt nicht verwendet werden kann. Es könnte möglich sein, mehrere Kopien derselben Anwendung auf einer Maschine auszuführen, aber Sie könnten auch Schwierigkeiten haben, Fehler aufzuspüren. Weil Rails single threaded ist, ist das Ausführen von nur einem Ruby-Prozess pro Maschine undenkbar.

Auch funktioniert es nicht so gut.

Eine ausführlichere Diskussion finden Sie unter den Blog dieses Phusion-Mitarbeiters

    
Sam 21.05.2009, 23:52
quelle
7

Es wurde bereits geantwortet, dass mod_ruby zu einem gemeinsamen Ruby-Interpreter führt, aber der Grund dafür ist besonders problematisch, dass es bedeutet, dass Klassen sich gegenseitig übertreten. Betrachten Sie zum Beispiel ActiveRecord :: Base, das eine Verbindung zu einer bestimmten Datenbank definiert. Der Zustand dieser Klasse unterscheidet sich zwischen verschiedenen Rails-Anwendungen. Wenn also mehr als eine Rails-Anwendung auf demselben Interpreter ausgeführt werden sollte, haben Sie einen schweren Klassenkrieg.

Eine andere Antwort besagt, dass Rails single threaded ist, aber dies ist nicht unbedingt so wie bei Rails 2.2.2. Ich würde dies als Kommentar zu dieser Antwort hinterlassen, aber ich bin in einer Karma-Zwangsjacke:)

    
Peter Cooper 22.05.2009 02:49
quelle
2

"mod_ruby verwendet einen Interpreter pro Apache-Prozess, also Apps in den Namensräumen übereinander laufen. Zumindest für Rails nicht akzeptabel, also ist es 1 App pro Apache-Setup, wenn du mod_ruby willst. "- David Heinemeier Hansson

Nun, da einige davon verspottet wurden, wenn Sie es immer noch verwenden möchten, sehen Sie sich die mod_ruby-FAQ

Dreamhost hat es versucht Ruby in ihre Hosting-Umgebung aufnehmen, dies aus ihrem Blog über ihre Schlussfolgerungen aus diesem Unterfangen.

    
JensenDied 22.05.2009 00:01
quelle

Tags und Links