Ruby应用服务器Mongrel的原始版本的开发者Zed Shaw的一句咆哮让我想起了DreamHost在过去几年托管Ruby on rails驱动的网站的经历。如果您是Ruby on Rails开发人员、对这类东西感兴趣的书呆子,或者对高度公开的开源项目的幕后内容感兴趣,那么这篇文章本身有些冗长,但却是一本有趣的(尽管是自我放纵的)读物。
对于Zed Shaw关于Rails开发团队如何运作的评论,我没有任何补充,因为我个人对此没有任何了解。我个人了解的是,启动并运行Rails应用程序并保持其运行是多么困难。DreamHost有10多年在大多数最流行的Web编程框架中运行应用程序的经验,而Rails过去和现在都是最令人沮丧的。
当我们第一次开始实现对Ruby on rails的支持时,我们想尽我们所能来支持它。这是一个令人兴奋的新Web框架,它为Web应用程序开发注入了活力。Ruby on rails似乎非常符合我们的公司理念,我们认为我们现有的客户群会喜欢它。我们最终实现了相当多的新功能,仅仅是为了支持Ruby on rails,尤其是对FastCGI的支持。事实证明,Rails本身速度太慢,无法在没有某种加速的情况下使用(与我们支持的任何其他web编程环境不同),而FastCGI到目前为止是最适合共享web主机环境的。不幸的是,Rails和FastCGI并不能真正相处!无论我们做什么,Ruby on rails的用户总是看到常规的内部服务器错误。我最好的猜测是,FastCGI动态进程管理器礼貌地要求Rails进程停止运行,结果他们只是退出,让应用程序束之高阁。当然,这是外行的说法!
这些问题后来大多被Ruby on rails的一个用户缓解了,他希望它在我们的服务器上能更好地工作,但是来自Rails社区本身的解决方案是相当老实、愚蠢的。他们说停止使用Apache和FastCGI(这两个组合成功地驱动了无数的网站,但不是Ruby on rails网站),转而使用Lighttpd和SCGI(一种类似FastCGI的协议,可能在技术上更优越,但几乎没有人使用)来完全重新装备我们的服务器。(Lighttpd和SCGI是一种类似FastCGI的协议,可能在技术上更优越,但几乎没有人使用)。这一建议要么表明他们完全不了解虚拟主机的工作原理,要么表明他们完全无视现实世界。推荐用户为他们的商业应用程序使用更高端的专用服务器主机固然不错,但你不能忽视这样一个事实,即几乎每个人都会想要使用低成本的共享主机开始使用。这只是简单的经济学问题。此外,使用Ruby on rails等系统的人希望花时间编程,而不是花时间设置服务器。推荐没有被任何一家主要的虚拟主机公司广泛使用或支持的技术会给你的用户带来太多的负担,你想让他们高兴!值得庆幸的是,我们甚至从来没有尝试过切换我们的系统来支持lighttpd和scgi,因为6个月后,Rails社区的“流行事物”已经转移到了Mongrel。你们已经下定决心了!
Zed Shaw在他的咆哮中提到,即使是由DHH(编写Rails的人!)运行的Ruby on rails应用程序也是如此。出现常规问题,每天需要重新启动几次。Rails社区充满了非常聪明的程序员,他们实现了一个伟大的系统,在不需要管理的时候工作得非常棒。这是我用过的最反复无常的web应用程序系统之一,这来自于一个既经历过命运多舛的Netscape web服务器,也经历过多次PHP迭代的人(PHP本身有很多问题,所以PHP的人们不要太沾沾自喜)。
Ruby on rails具有惊人的潜力,但在它像PHPWebTM这样不那么大肆宣传的…应用程序环境得到广泛使用之前,这里有一些事情是必须解决的。
Ruby on rails需要更快得多。有了合适的加速器,它可以很好地使用,但没有加速器就会很痛苦。Ruby本身就是问题的一大部分,所以不幸的是,这个问题可能归结为只是简化了加速器技术的管理。混合似乎是朝着正确方向迈出的一大步,尽管它不是特定于Rails的。我希望Rails核心开发人员在未来能与Mongrel开发人员更紧密地合作。
Ruby on rails或多或少需要在任何环境中工作。您不能只期望您的用户以任何方式设置他们的服务器。有数以百万计的现有系统不能简单地集成任何你认为本周更好的尖端技术。如果你继续保持这种态度,你肯定是在自食其果。
您需要更好地维护向后兼容性。诚然,这是PHP历史上做得很差的领域,但没有理由不胜过它们。此外,无可否认,Rails作为一个开发平台还很年轻,而你们在很早的时候就已经获得了很多关注。尽管如此,大肆炒作的同时也带来了重大的责任。你现在需要保持势头。
官方支持共享主机环境。我从Rails社区得到的感觉是,Rails被当作某种高端应用系统来推动,这使得忽略绝大多数用户Web环境是可以的。您不能忽略共享主机用户。在我看来,PHP人员所做的让他们走到今天的一件事就是拥抱共享主机,努力让他们的软件在共享主机中运行良好。这意味着它必须非常轻量级(在Rails中可能已经太晚了!),并且它必须以最小的麻烦“插入”到各种各样的操作环境中。像这样的兼容性工作不是迷人的、令人兴奋的或有趣的,但它是必须要做的。
DreamHost非常希望继续完全支持Ruby on rails。Ruby on rails确实有很好的前景,我认为假以时日,它可能会迎合围绕它的炒作。我只希望社区在那之前不要自以为是!
这里提出的观点完全是从一个有一定网络经验的局外人的角度出发的。我知道Ruby on rails正在一些流量非常大的网站上使用,当然可以让它工作得很好。我想说的是,它真的需要变得容易得多。您必须小心,不要将用户热情与易用性混为一谈。热情的用户将填补可用性方面的许多空白(DreamHost就是基于这一事实而蓬勃发展的!),但你不能长期依赖这一点。