對不起,如果這聽起來像一個愚蠢的問題,因爲它似乎是那些「沒有杜鵑」的事情之一,但有人可以向我解釋爲什麼Rails需要它自己的服務器(Mongrel,WEBrick,mod_rails等)和不能簡單地使用mod_ruby?爲什麼不能使用mod_ruby工作?
8
A
回答
7
所有運行mod_ruby的apache實例共享一個Ruby解釋器。這意味着它不能在共享主機上或在每臺機器上運行多個Rails應用程序的任何環境中使用。在一臺機器上運行同一個應用程序的多個副本也是可能的,但是你也可能很容易地遇到難以追蹤的錯誤。因爲rails是單線程的,所以每臺機器只運行一個ruby進程是不可想象的。
此外,它不能很好地執行。
對於深入討論更多知識,請this Phusion employee's blog
2
「mod_ruby使用每Apache進程一個解釋,這意味着應用 步行遍佈在命名空間彼此。至少對於Rails的,這 不能接受,所以如果你想要mod_ruby,那麼每個Apache安裝程序就有1個應用程序。「 - David Heinemeier Hansson
現在,它一直嘲笑一些,如果你仍然想使用它,請查看mod_ruby FAQ
Dreamhost曾嘗試包括紅寶石到他們的託管環境,這從他們對他們的結論博客從這一努力。
7
已經回答說mod_ruby會產生一個共享的Ruby解釋器,但是這個問題特別有問題的原因是它意味着相互之間的類相互碰撞。例如,考慮定義到特定數據庫的連接的ActiveRecord :: Base。這個類的狀態在不同的Rails應用程序中是不同的,所以只要有一個以上的Rails應用程序在同一個解釋器上運行,就會發生嚴重的階級戰爭。
另一個答案指出,Rails是單線程的,但這不一定是真正的Rails 2.2.2。我會留下這個作爲對這個答案的評論,但我在一個業障緊身衣:)
相關問題
- 1. 爲什麼不能使用flatMap工作?
- 2. 爲什麼不能使用JSON工作?
- 3. 爲什麼我不能使TinyMCE工作?
- 4. simplecart.js爲什麼不能爲我工作?
- 5. cv.findChessboardCorners爲什麼不能爲我工作?
- 6. 爲什麼我不能使用功能性方法來工作?
- 7. 爲什麼我不使用NSLock工作?
- 8. 爲什麼不使用Begin []工作?
- 9. 爲什麼不使用注射工作?
- 10. 爲什麼使用margin:auto;不工作?
- 11. 爲什麼不能正常工作
- 12. Cluetip插件 - 爲什麼不能工作?
- 13. TTimer爲什麼不能正確工作?
- 14. 爲什麼blur()不能工作?
- 15. 爲什麼我的hg不能工作?
- 16. 爲什麼$ _GET不能工作PHP 5.3.21?
- 17. 爲什麼我不能注射工作?
- 18. 爲什麼我的SQL不能工作?
- 19. 爲什麼這個makefile不能工作?
- 20. 爲什麼synchronizedList不能正常工作
- 21. 爲什麼webservice不能手動工作?
- 22. 爲什麼ListView.ScrollIntoView不能正常工作?
- 23. 爲什麼TH32CS_SNAPMODULE32不能單獨工作?
- 24. 爲什麼Javascript不能正常工作?
- 25. 爲什麼我的UIButton不能工作?
- 26. 爲什麼我的功能不工作
- 27. javascript - 爲什麼不能正常工作?
- 28. 爲什麼FaceboxRender不能正常工作?
- 29. 爲什麼這個jQuery不能工作?
- 30. 爲什麼mysql_real_escape_string()不能正常工作?