2

我是 ruby​​ on rails 的忠实粉丝,它似乎融合了许多 Web 应用程序编程技术的“最热门”。在我看来,约定优于配置尤其是一个巨大的胜利。

然而,我也有一种感觉,我得到的一些便利是以需要在未来偿还的技术债务为代价的。并不是我认为 ROR 又快又脏,因为我认为它在许多情况下包含了许多最佳实践和良好的默认选项。然而,在我看来,这还没有涵盖一些东西(特别是框架中几乎没有对安全性的直接支持,而且我看到的插件质量参差不齐)。

我不是在这里寻找宗教观点或激战,但我很想知道社区对 Rails 需要改进的领域的看法,和/或 Rails 用户需要自己注意的事情,因为框架不会牵着他们的手引导他们做正确的事。

4

6 回答 6

3

无论框架如何,程序员都需要知道她在做什么。我想说,使用像 Ruby on Rails 这样成熟、设计良好和广泛适用的东西来构建安全的 Web 应用程序比不使用框架支持要容易得多。

注意插件并了解它们是如何工作的(再次了解您的工作)。

于 2009-01-04T11:02:23.130 回答
1

我也喜欢 Rails,但了解我们使用的框架的缺点对我们很重要。尽管解决这些问题可能是一个广泛的话题,但不会伤害任何人。

除了安全问题,另一个大问题是在共享主机上部署。PHP 在共享托管环境中蓬勃发展,但 Rails 仍然落后。

当然,大多数专业的 Rails 开发人员都知道他们的应用程序需要经过微调的服务器用于生产,他们显然会部署在特定于 Rails 的主机上。

为了让 Rails 继续成功,核心团队应该解决这个问题,尤其是随着 Rails 3.0 (Merb +Rails) 的到来。

一个简单的例子:我有一个 bluehost 帐户,我注意到我的 cpanel 中有 Rails 图标。我与 bluehost 支持人员进行了交谈,他们说它或多或少是一个虚拟图标,并且无法正常运行。

话虽如此,任何想要部署 Rails 应用程序的专业人士都不会使用 bluehost。,但它确实伤害了 Rails,当主机说他们支持它然后用户遇到他们的支持一无所知的问题时..

于 2009-01-04T11:47:21.463 回答
0

您引用的文章将技术债务定义为

[the] 邋遢的软件架构和仓促的软件开发的最终后果

使用 Rails,任何非测试驱动的开发都会招致技术债务。但任何平台都是如此。

在架构层面,Rails 提供了一些部署挑战。繁忙的站点必须使用大量硬件进行扩展或使用智能缓存策略。

我对任何适应 Rails 的人的建议是:

  • 使用 TDD 进行所有开发
  • 通过阅读其测试来验证您使用的任何插件的质量。如果它们不清晰和完整,请避免使用插件
  • 阅读“Rails Recipes”和“Advanced Rails Recipes”(Advanced Rails Recipes 有一个很好的方法可以以 RESTful 方式添加身份验证)
  • 准备好支付硬件来扩展您的站点(硬件比开发时间便宜)
于 2009-01-04T12:20:12.180 回答
0

根据我的经验,到目前为止,您最终为 RoR 支付的最大费用是:

  • 相当大的默认堆栈(不包括您可能正在使用的插件)
  • 更新模型往往是一件让人头疼的事情,至少在生产服务器中是这样。
  • 更新 Rails 或 Ruby 本身比它应该的要复杂一些,但这取决于您的服务器设置。
  • 正如 ewalshe 所提到的,部署有时是一种拖累,而且如果您需要它,那么扩展会变得有点不确定,就像大多数开发框架一样。

话虽如此,对于某些项目,我是 RoR 的狂热用户,并且根据硬件的实际状态,即使您最终为使用它付出了一些技术债务,它几乎可以忽略不计。人们可以希望这些问题最终会得到审查并得到解决。

于 2009-01-04T12:51:19.153 回答
0

对于任何级别的抽象,您都会付出一些代价 - 泛型方法不如那些专门为您的目的而构建的方法那么快。不过幸运的是,您可以进行更改。不喜欢动态查找方法产生的查询计划?自己写,好走。

上面有人说得好-硬件比开发人员便宜。我会添加“以足够低的硬件数量”

于 2009-01-06T04:55:11.250 回答
0

我正在阅读Deploying Rails Applications并强烈推荐它来回答您的问题。

这本书充满了使生活更轻松的建议,从头开始采用部署感知方法进行 Rails 开发,而不是将其留到以后。

我不认为选择 RoR 意味着技术债务,但仅阅读前几章就提醒我应该遵循的做法,特别是在共享主机上,例如冻结核心 Rails 宝石,这样你就不会被升级打断在主机上。

关于共享主机的 30 页一章包括内存引用提示,例如使用多个帐户(如果可能),每个帐户一个 Rails 应用程序。它还警告诸如 RMagick 之类的流行库可能会将您的内存大小推到您的进程被终止的程度(例如 100MB 限制,它建议某些主机定期应用)。

于 2009-12-09T04:04:40.767 回答