对不起,如果这听起来像一个愚蠢的问题,因为它似乎是那些“没有杜鹃”的事情之一,但有人可以向我解释为什么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()不能正常工作?