我想知道在哪些情况下我应该考虑使用Rails以外的框架。
答案 0 :(得分:2)
Ruby on Rails并没有试图成为最终的所有Web开发框架。如果你要构建一个主要使用CRUD操作构建的应用程序,你想要使用大量的AJAX,并且你可以完全控制数据库,那么Ruby on Rails就是一些很好的选择之一。如果您正在做其他事情,那么可能还有另一个框架可以更好地满足您的要求。
答案 1 :(得分:2)
两件事。首先,Ruby是一种相对年轻的语言,当你尝试做更多深奥的事情时(例如连接到非主流或旧版数据源),你可能会碰壁。它也有糟糕的GC,没有内核线程,这两者对于高性能平台都非常重要。主代码库(MRI)非常hacky(许多聪明的混淆程序员技巧,如宏),并且有些部分写得不好(gc和线程调度跳跃到脑海)。同样,它是一个非常年轻的平台,非常受欢迎。
其次,虽然ruby语言和轨道的想法/范例都是惊人的,ruby和rails,而平台却不是。 ruby和rails中有很多很多东西都是非常难看的,与其他平台(php / asp / jsp)的正常情况相比,部署解决方案处于黑暗时代。
被指责在这里拖钓,所以我会稍微阐述一下。由于线程模型,Rails无法同时处理请求,除非您启动rails应用程序的多个完整实例。要做到这一点,你有两个选择,相对年轻,仍在开发中的乘客(mod_rails),或者经过试验和测试的apache负载均衡器,后面有多个mongrel实例。
无论哪种方式,缺乏仅仅产生工作者的能力意味着您将需要运行5-10个完整的应用程序实例,这会产生非常大的开销(根据您的宝石和每个应用程序可轻松实现300-500megs)你的应用程序有多大)。正因为如此,为铁路提供服务所需的基础设施比其他大多数东西更加复杂。
现在,话虽如此,情况一直在变好(我的意思是,乘客现在可以使用,这不是我最后一次处理部署rails应用程序)。如果rails在未来几年内没有赶上,我会非常惊讶。
另外,rubinius / jruby正在以正确的方式做事,并且正以极快的速度前进。如果MRI在接下来的几年中被放弃,而不是主流导轨工作的其中一种实现,我不会感到惊讶。
答案 2 :(得分:2)
编辑:Matt高兴地修改了他的答案:)我删除了自己的评论,指出了他修复的问题。
是的,Ruby肯定有一些缺点。绿色线程是一个巨大的线程。但正如马特所说,事情正朝着更好的方向发展。
其他帖子几乎都是钱。非常简单的CRUD应用程序最适合rails,尽管是其他框架,您可以在Ruby中尝试提供更多灵活性。
这里有一个很好的(也可能是我添加的目标)示例,其中不使用rails:Does the Rails ORM limit the ability to perform aggregations?
答案 3 :(得分:1)
我将开始说Rails适用于大多数应用程序。但是,如果你需要做很多异步类型的工作(比如系统之间的消息传递,比如获取请求,将它放在队列中并在不同的线程中处理它,甚至在另一台机器上),Rails可能不是你的最好的选择。 Ruby,至少目前来说,在多线程代码上并不是很强大。
让侮辱飞起来!