编程语言“on rails”是什么意思?

34

我目前正在使用Groovy和Grails进行工作。由于Groovy基本上就是Java,所以它相当直观易懂,但是我不能说我完全理解Grails。我读到过一句话,“Groovy对于Grails就像Ruby对于Ruby on Rails一样”,但这是什么意思呢?

11个回答

43
为了解决您对这个隐喻的困惑(虽然在您的问题下已经用其他词语回答过),请看以下内容:
Groovy 相当于 Grails,就像 Ruby 相当于 Ruby on Rails。但是这意味着什么呢?
Grails 是建立在 Groovy 编程语言上的 Web 框架,与 Rails(Ruby 的 Web 框架)为 Ruby 所做的事情相同。
关于“on rails”是什么意思?
这个问题的答案归结于这些 Web 框架的本质。这些 Web 框架(Grails 和 Rails)是基于“约定优于配置”的前提构建的。这意味着使用通用约定开发 Web 应用程序可以提高生产力和可维护性(这是一种粗略的概括)。通过定义惯例并坚持遵循它,您会发现您的应用程序易于生成并快速启动。
对我来说,“on rails”就是这个意思,就像火车一样。当新的列车路线被开发出来时,没有必要担心重新发明列车从一个地方到另一个地方的方式,因为几十年来只使用了一个惯例:铁轨。就像火车路线上的轨道限制其从两个位置到达的路径一样,基于约定的 Web 框架使用约定来限制应用程序开发人员的灵活性,以便他们可以集中精力解决其应用程序的基本业务问题。
Web 框架的惯例的一个关键好处是,Web 框架现在可以假设某些层次的应用程序如何钩子在一起。在 Rails 中,人们通常可以假设如果他们的数据库表有复数名称,则映射到该表的 ActiveRecord 类将具有相应的单数名称。因此,Rails 代码生成器可以使用数据映射信息生成数据访问代码,例如动态查找器、迁移、延迟加载的关联遍历等。而在基于配置的框架中编写这些数据访问代码则很繁琐。

17

有几个人提到了Rails/Grails的技术细节。也有几个人提到“约定优于配置”是Rails/Grails中的“rails”。这更接近事实。但这只是Rails更广泛的哲学中的一个特征,即“有主张的软件”概念。

有主张的软件不仅仅可以用技术术语来描述;这是一种哲学; 一种价值观; 态度。无论你喜欢还是讨厌,那就是Rails核心所在。

以下是Rails创始人David Heinemeier Hansson在2005年的采访摘录

Rails是有主张的软件。它摒弃了将旧版软件理念放在主要位置的做法。其中之一是灵活性-我们应该尝试容纳尽可能多的方法,不应该对一种开发形式评头论足。好吧,Rails做到了,我相信这就是它成功的原因。

使用Rails时,你可以在基础建设层面上牺牲灵活性以换取在应用层面上的灵活性。如果你愿意沿着我在Rails中嵌入的黄金路径工作,你将获得巨大的生产力奖励,从而使你能够更早、更好地在应用程序层面上做更多的事情。

还有一次后续的采访进一步探讨了该主题

所谓“on rails”是指“有主见”,这也是它被命名的原因。加上“Ruby on Rails”是押韵的,这是任何记者或作家会告诉你的,这是吸引人们注意力的必定方法。


8

我认为一个致力于“类Rails”框架的目标包括以下几点:

  • 模型层:采用AR模式的ORM(而不是数据映射器),自动迁移或管理模式和模型层,处理应用程序中的外键(而非数据库模式,也不使用存储过程或纯DBMS逻辑)

  • 鼓励TDD:自动生成单元测试的框架

  • 命名规则连接数据库表名、模型名称、控制器和视图动作以及HTML模板

  • 简化路由识别和路由生成方案

  • 强调REST架构

  • 与Ajax库集成:RJS、Prototype和Scriptaculous


7

Rails 是一个用于开发带有数据库后端的Web应用程序的框架。我认为这个名字最初是一个双关语。火车可以让你真正快速地到达某个地方,但只能走铁轨。


5

“Being on rails”意味着您无法控制自己的方向。这意味着,您只能按照已经铺设好的铁轨行驶。任何试图去那些铺设者没有预料到的地方都会导致沮丧。


1
+1 呵呵呵 :-) 虽然我不完全同意你的观点,但这是一个有趣的回答,并且确实触及了 Rails 社区中最激烈的争论。 - Topher Fangio

2

这是一个汽车术语。当一辆车的操控表现非常好时,就会说它“转弯如履平地”(即它能给你出色的控制感)。

我不知道铁路人员是否因此得名,但这就是我的解释。


2
非常简短明了的答案是:约定优于配置。

我的回答可能属于迂回的范畴,但它简洁明了。 - codeLes

1
如上所述,Rails和Grails为Web应用程序开发提供了约定 - 以特定方式命名您的组件并将它们放在正确的位置,即可默认情况下使您的应用程序工作,无需额外配置。当您想要偏离惯例时,可以进行配置以达到目的。

1

我不同意其他评论中“Rails是一种关于约定优于配置的哲学”等观点。

虽然Rails确实遵循这些哲学,但“Ruby on Rails”是一个Web框架的名称。仅此而已。它并没有指涉任何特定的“on-railsness”,它只是一个品牌名称,就像麦当劳是一个品牌名称一样。

如果其他人编写了另一个框架并将其称为“Python on Rails”,那么就会有另一个品牌名称。如果没有,那么“XYZ on rails”只是让人们感到困惑。


1

Ruby和Groovy是编程语言。

Ruby on Rails是一个开创性的webapp框架。请参见上面关于有主见软件的优秀答案。

历史上,一个Groovy webapp框架的工作标题是。但是RoR社区反对了。团队选择了代替。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接