加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 为什么Apache还没有可行的mod_ruby?

发布时间:2020-12-16 19:54:19 所属栏目:百科 来源:网络整理
导读:像 Ruby和Rails一样受欢迎,似乎这个问题已经解决了. JRuby和mod_rails都很好,很漂亮,但为什么Apache mod只是直接的Ruby? 解决方法 基本的问题是:长久以来,MRI是唯一可行的Ruby实现. MRI具有许多问题,难以将其嵌入到另一个应用程序中(这基本上是 mod_ruby所
像 Ruby和Rails一样受欢迎,似乎这个问题已经解决了. JRuby和mod_rails都很好,很漂亮,但为什么Apache mod只是直接的Ruby?

解决方法

基本的问题是:长久以来,MRI是唯一可行的Ruby实现. MRI具有许多问题,难以将其嵌入到另一个应用程序中(这基本上是 mod_ruby所做的:将其嵌入到Apache中),特别是一个多线程(Apache).它不是特别线程安全,它有相当多的全球状态.

这个全局状态意味着例如,如果一个Rails应用程序修改某个类,那么在同一Apache服务器上运行的所有其他Rails应用程序也将看到此修改的类.

另一个问题是MRI源代码不容易被攻破. MRI现已超过15岁,开始显现.

由于这些问题,mod_ruby从来没有真正地正常工作,而在某些时候,维护者就放弃了.

另一方面,基于C的PHP解释器是从第一天开始设计的,作为Apache中的mod_php运行.事实上,对于前几个版本,甚至没有一个命令行版本的解释器,mod_php是运行PHP的唯一方法.

Phusion Passenger (aka mod_rack aka mod_rails)通过基本放弃并回答问题来解决这个问题:它们在每个应用程序的单独过程中简单地运行一个单独的MRI副本.它的功能非常好,不仅仅是Ruby.它支持WSGI(Python Web Frameworks的标准接口),Rack(Ruby Web Frameworks的标准接口),以及对Ruby on Rails的直接支持.

我的希望是mod_rubinius,不幸的是还不存在. Rubinius从一开始就设计为线程安全,可嵌入,没有全局状态,不使用C堆栈等.它被设计为能够在一个Rubinius进程内运行多个Rubinius VM.这使得mod_rubinius比mod_ruby更容易实现和维护.不幸的是,当然,Rubinius还没有发布,而在Rubinius被发布之后,mod_rubinius的真正工作甚至不能开始.好消息是,mod_rubinius已经比mod_ruby拥有更多的人力,因为它已经为Rails托管公司付出了开发人员的费用,Rails托管公司很想自己使用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读