Ruby on Rails(官方简称为 Rails,亦简称为 RoR),是一个使用 Ruby 语言写的开源 Web 应用框架,严格按照 MVC 结构开发。它努力使自身保持简单,来使实际的应用开发代码更少,使用最少的配置。Rails 的设计原则包括 “不做重复的事”(Don’t Repeat Yourself)和 “惯例优于设置”(Convention Over Configuration)。Ruby 语言以自然、简洁、快速著称,全面支持面向对象程序设计,而 Rails 则是 Ruby 广泛应用方式之一,在 Rails 平台上设计出一套独特的 MVC 开发架构,采取模型(Model)、视图(View)、控制器(Controller)分离的开发方式,不但减少了开发中的问题,更简化了许多繁复的动作。如此优秀的 Ruby on Rails,怎么会有“Ruby on Rails 已死”的言论,还传得甚嚣尘上?
只要在谷歌上搜索 Ruby on Rails,肯定会得到与本文标题类似的结果。事实上,这个问题可以追溯到几年前,当时就有人开始反思,使用已经问世 13 年的基于 Ruby 的框架,是否值得。
有些人会反驳:如果要构建需要根据用户行为进行调整的动态复杂网站,这个框架仍然是很好的选择。像 Airbnb 和 Soundclod 这样的网站使用这个框架的效果就特别好。Rails 的支持者相信这个框架的快速编程过程也有很大价值,并鼓励公司在需要时寻求 Ruby 开发外包。
另一方面,Rails 的批评者则认为,这个框架的光辉岁月早已远去,并且还有更好的选择。这些框架包括借鉴了 Rails 的一些想法作为基础框架,如 Python 的 Django 和 Perl 的 Catalyst。
那么,孰是孰非?嗯,这并不是非黑即白的情况。有些项目可以从 Ruby 开发者或足够复杂的软件中受益,以至于可以考虑外包给一家 Ruby 开发公司。但是,还有其他项目,Rails 根本无法解决这一问题。
有一件事是肯定的,Ruby on Rails 仍然是某些项目的有效选择。让我们继续阅读,一探究竟。
Rails 依然生气勃勃
尽管有些人表示“Ruby 和 Rails 已经死了”,但事实远非如此。我们有几个理由这样认为,包括:
大型网站仍在使用它: 如果 Rails 真的死了,那么使用它的网站就应该远离它,不是吗?那他们为什么还要坚持使用不再受支持的框架呢?那是因为 Rails 并没有死掉。像 Shopify、Airbnb、GitHub、SoundCloud 和 Hulu 这样的大型网站,直到今天还在使用 Ruby on Rails,而且还一直把赌注押在它的发展上。此外,有大约 2700 万个网站使用这个框架构建,从这个角度说明,这个框架仍然是非常活跃的。
它有一个活跃的社区: 仅在 GitHub 中,Rails 就有 3800 多个贡献者(相比之下,Django 只有 1700 多个贡献者),这些贡献者定期帮助开发。在主要贡献中,有新的开源库(gem)和丰富的文档,其中有关于如何最大限度地使用和开发这些 gem 的说明和指南。
Rails 仍然不断更新: 因为有活跃的社区和稳定的用户基础,很显然,Rails 仍然会更新。事实上,Rails 6.0 刚刚于去年 4 月发布,其中包含了 4 个主要功能,这些功能显示了开发者对这个框架的承诺。这些功能包括:
Action Mailbox(行动邮箱):一种新的方法,将传入的电子邮件路由到类似控制器的邮箱,以便在 Rails 中处理。
Action Text(行动文本):它将 Trix 编辑器引入 Tails 中。
并行测试:使用 fork 或 threads 来并行测试。
Webpack:默认的 JavaScript 捆绑器。
初创公司使它保持活力: 由于 Rails 是一个开源框架,初创公司将其视为一种在项目中削减成本的好方法。它的 gem 还为 Ruby 开发人员提供了通过更简单的编码来创建丰富功能的可能性。考虑到使用 Rails 编码是非常简单的事,Ruby 开发公司在处理其应用程序时所花费的时间更少。
使用 Rails 的优点和缺点
现在,我们已经知道了 Rails 依旧非常活跃,是时候回答“为什么要在项目中使用 Ruby 开发服务?”的问题了,要回答这个问题,我们有必要了解 Rails 的优缺点。
优点包括:
快速开发过程: 如果你曾经与 Ruby 开发人员合作过,那么你必定知道,在开发一个项目的速度方面,很难击败 Rails。正如我们之前所说,其直观的编码使得从一个阶段到另一个阶段的开发变得更容易,从而节省了时间和成本。有人估计,Ruby 开发公司完成一个项目的速度,要比那些使用其他栈的公司快 40%。
易于实现: Rails 速度极快的另一个表现是在应用程序中实现复杂的业务逻辑。Ruby 开发人员可以非常快速地创建 API,并与前端框架(例如 React 或 Vue)完美配合,以便立即获得应用程序。
海量的库: Rails 的另一个特点是,有非常广泛的库可供使用,如此一来,开发者便能轻松专注于应用程序的整体逻辑。许多功能的实现相当简单,因为 gem 充当了应用程序和外部服务之间的桥梁。
Rails 惯例: 使用惯例减少开发人员必须做出决定的数量,并限制重复。这样,开发人员只需指定应用程序的非常规方面,而将典型行为留给框架。这使得 Ruby 开发服务更容易从一个 Rails 项目转移到另一个项目,因为结构和编码时间仍然非常相似。
自我记录: 通过组合一组流行且免费的 gem,可以为项目添加自我记录的功能。这将为正在处理的项目创建必要的文档,这将会把开发者从单独处理项目的需求中解放出来。这还允许其他开发人员仅通过引用相同项目上的现有文档就可以处理同一个项目。
至于缺点,以下是最相关的:
性能不理想: Rails 并不快。事实上,Rails 并不是需要高运行速度和低服务器资源消耗的项目的首选。这主要适用于同时拥有数百万用户的应用程序,但这个问题仍然值得一提。
扩展问题: 虽然有些人说不能,但确实可以扩展 Rails,就是需要升级服务器或者在多个服务器上分配工作。问题是,这样做是否真的值得,因为必须在服务器基础架构上投入更多资金,才能获得与其他框架和后端解决方案(如 NodeJS 或 Phoenix)相同的性能。
不够灵活: 在 Rails 中编写代码,既简单又快速,但有一点需要注意:开发人员可以按照框架要求的方式编写代码。这对于某些应用程序可能很好,但是当处理非常规项目时,很多默认功能都无法调整,这意味着 Ruby 开发人员必须适应,或者使用其他框架。
缺乏尖端技术库: 现在,开发者生活在人工智能和机器学习时代。不幸的是,Rails 和这些技术无法和睦相处。事实上,它的社区对开发解决方案并没有兴趣,如果在一个项目中考虑使用这些技术之一,那么最好使用 Python 甚至 Java。
应该使用 Ruby on Rails 吗?
Rails 仍然是相关的,并且还有很多积极的东西可供选择。但是,这个问题值得一提,有些特定类型的项目在使用 Rails 开发时可以完美工作:
Web App: 如果不希望同时拥有数百万用户,Ruby on Rails 就是一个很好的选择。它易于使用,可以比其他框架更早地将产品推向市场,并且,还提供了一项拥有大量特性的可靠技术。
电子商务: Shopify 仍然使用 Rails 是有原因的:它有大量面向电子商务商店的 gem。这意味着,如果使用这个框架的话,可以让商店在短时间内启动并运营起来,甚至还可以通过帮助台、支付网关,甚至电子邮件来启动。
内容管理: Rails 库还为内容创建和 SEO 提供了强大功能,允许用户在短时间内构建一个以内容为中心的网站,提供创建和分发所需的所有选项,并提供最佳实践。
自定义数据库解决方案: 由于 Rails 具有 ActiveRecord,因此可以轻松地操作数据库而无需 SQL。这个 ORM 还与数据库管理系统集成,提供了一种管理复杂数据库的可靠方法。
原型: 最后,Rails 非常适合创建各种应用程序的原型。由于 Rails 非常易于使用,且快如闪电,可以在短时间内得到应用程序的框架版本。因此,开发者可以生成具有基本功能的早期版本,以向团队其他成员展示所希望的新项目开发方向。
结束语
Rails 值得开发者重新考虑,该项目的性能并不是最好的,而且还存在可伸缩性问题,但有几个好处让 Rails 变得优秀。比如,构建原型的可能性、为电子商务提供的功能、用它编写代码的易用程度以及大量可用的库,这些都是使用 Ruby on Rails 可以获得的。
此外,还有一个活跃的社区,社区中有大量参与者,他们会不断突破界限,开发新的 gem,以促进框架发展。在使用 Rails 之前,开发者需要知道的唯一事情就是正在着手哪种类型的项目。
最后要考虑的一件事,我们还没有提到:如果“Ruby on Rails 已死”言论成真,这会使得在 Rails 项目中更难以寻找到合适的人才。这就是为什么大多数使用这个框架的公司,都在寻求海外 Ruby 开发团队帮助的原因。通过这些团队,可以避免冗长的招聘过程,并且有足够的灵活性来使用这一框架。
作者介绍:
Jaspal Singh,职业博客写手、网页设计师、SEO 和 WordPress 专家。居住在 Jaipur,喜欢学习新事物,目前正在尝试视频编辑。
原文链接:
Is Ruby On Rails Still Relevant In 2019?
评论