RoR的缺点是什么?[关闭]


39

我目前正在尝试确定要在Web开发中学习和使用的服务器端语言,虽然相对容易获得有关为什么x,y或z是一件好事的信息,但要弄清每种缺点都很难其中。

特别是,我很好奇与其他给定语言/框架相比,学习和/或使用Ruby on Rails有哪些缺点。


5
这让我非常讨厌ASP.NET。这是个问题,因为那是我的日常工作。
杰里米

5
只是在评论中提到这一点,以防其他人想详细说明,但有利与不利的一面是,RoR有时有时可能太“神奇”了-有时很难理解背后的情况场景(因此,如果您是Web开发的新手,那么您会想到很多事情)。当然,所有高级语言基本上都是如此,这也是使它们更容易,更快速地使用的原因。
grautur

1
FWIW如果您正在关注RoR,那么肯定会关注具有Razor的ASP.NET MVC3。老实说,如果您喜欢获得报酬(我确定愿意),那是我在ASP.NET中进行开发的40%的原因。另外60%是我觉得这是最好的Web平台时期,即使它有其痛点,其中几乎所有的痛点都已经以Nuget结束。

可以将RoR视为CRUD应用程序的工具,您可以使用它来做其他事情,但是对于更一般的事情,其他语言/框架会更灵活而不会造成混乱。
alfa64 2012年

Answers:


59

从经验上来讲:缺点是您过于依赖Rails框架。如果您只编写简单,全新的CRUD应用程序,而这些应用程序正好落在Rails的“最佳位置”,那么这是一件伟大而美好的事情。您的生产力将飞速增长。但是,当您不得不在最佳位置之外做某件事时-与现有数据库进行交互,与未定义JSON或XML API的另一个应用程序对话,实现复杂的工作流程时,Rails将成为您的敌人。这可以使用Rails来做这些事情,但是它“违背了原则”,因此您基本上是自己弄清楚如何去做,因为社区通常只会回答“不要这样做,这不是Rails”方式”-这可能会导致生产力下降或代码非常混乱,因为您基本上必须在Rails框架周围进行修改。

此外,还有潜伏的缺点:其他所有东西看起来都很难看而且很笨拙。一旦您品尝了Rails的甜蜜,甜蜜的花蜜(好吧,在这里进行了传布……),其他所有东西都将s折。从Rails返回到PHP或ASP.NET WebForms或Java,就像在茂密的花园中嬉戏后在指甲上行走;您不会以相同的眼光看到其他语言/框架,尽管您可能仍然会欣赏它们,但是您会暗自渴望Rails的爱慕拥抱。


11
听起来就像其他框架一样-当您需要开箱即用的东西时,这变得很困难。
Nemanja Trifunovic

12
是的,但是我发现Rails的情况要差一些,因为整个框架都是基于这样的想法构建的:您永远不会有理由需要“开箱即用”的东西。将其与PHP,ASP.NET MVC的Zend或Python的Django进行比较,它们比Rails灵活得多,同时仍然提供了框架的优点。不过,这并不是对Rails的猛烈抨击。
韦恩·莫利纳

3
但是幸运的是,RoR并不是唯一基于Ruby的Web框架。我本人更喜欢Sinatra + Datamapper + Haml / Sass或Sinatra + Sequel + Sequel + Haml / Sass以获得原始的SQL经验...与基于Java .NET的解决方案相比,RoR很棒。但是与其他基于Ruby的Web框架相比,它是一个重量级的怪物。
菲利普(Philip)

4
我很难确定韦恩是爱还是恨RoR。这种恋爱关系在大多数RoR开发人员中是否常见?
菲尔

2
@Phil一点A列,一点B列。即使我不太了解RoR,我也喜欢RoR。我一直在努力学习它,因为它确实很棒。但是另一方面,我在“现实世界”应用程序中使用了它,当我不得不走出CRUD应用程序的框框时,这让我有些烦恼,该应用程序可以与每个表单具有1-2个模型的单个数据库进行对话,就是这样。
韦恩·莫利纳

30

对于您的第一种服务器端语言,我觉得RoR可能有几个问题:

  1. 您不仅在学习语言,还在学习框架。在跳入铁轨之前,我肯定会花一些时间玩普通的红宝石。

  2. 由于它是一个框架,并且是一个“有主意的”框架,因此我认为它将为您提供有限的框架内所有活动的范围。

总体而言,Ruby on Rails可以成为一个很好的起点,但是对于太多依赖单个框架的Web开发,您可能会错过很多知识。


15

我尝试过几次学习RoR,而我最大的问题总是尝试使软件包和文档正常工作。文档的问题在于它似乎总是过时了(或非常基础)。我从网站上获得了基础知识,但除此之外,所有内容似乎都过时了(即使是我购买并最终归还的书)。另一个可能是缺点的事情是某些库所具有的依赖关系,以及它们如何与本库指出的冲突。


我稍后想到的而不是发表评论,我只是编辑我的答案是:RoR有机会为您破坏Ruby。我知道当我尝试它时,它使我认为“ Ruby很愚蠢”。几个月后,我决定试一试Ruby,并热爱该语言,正是该框架使我讨厌该语言。我并没有涉足太多,但是当我这样做时,我真的很喜欢Sinatra。我认为大多数人从Sinatra摆脱RoR感到高兴。


+1我有相同的经历。我尝试学习Ruby on Rails,但这样做却出错了rake db:migrate。另一方面,我发现Sinatra更加简单易懂。无论如何,我更喜欢以自己的方式进行设置,而Rails应用程序的基本结构对我来说似乎太复杂了。
zhhaohao

@Zhehao Mao-很高兴看到我不是唯一拥有这种经验的人。虽然,我不认为这很复杂...只要您认为与DHH完全相同。如果您的思维方式不同,RoR可能会给您带来痛苦。
2011年

我想并不是说它很复杂。我想我的问题是,每次尝试创建Rails应用程序时,都没有开箱即用的文档说明的方法。
zhhaohao

由于这个事实,我发现它非常复杂。这也是我放弃的原因。为了使其成为RAD,它必须工作。老实说,由于我在启动和运行RoR时遇到的所有问题(有点夸张,但仍然...),我真的可以用C ++制作出比RoR更快的CRUD应用程序
Jetti

我不确定你们是否在阅读正确的文档,或者为什么不寻求帮助……
sevenseacat 2011年

12

如果这是您的第一种服务器端语言,那就和其他语言一样好。要做的事情是专注于一个,在您掌握了它之后,探索其他人并得出自己的结论。

我每天都使用RoR和ASP.NET,但奇怪的是,我更喜欢ASP.NET世界,但这更多地与个人哲学有关,而不是与语言或体系结构本身有关。(我有点控制狂,我个人倾向于使用强类型语言)。

无论如何,我说放手一搏。RoR是一个很好的工作环境,但是在您直接进入Rails之前,请先熟悉Ruby作为一种语言。除了网络内容之外,如果您不得不管理* nix框并且可以节省大量时间,那么Ruby是一种非常酷的脚本语言。


4
+1为控制狂。我也有这种连胜感。不仅对于强类型,而且-我实际上以一种配置(尽管冗长)的方式,而不是约定为我做假设。
Bobby Tables

同上,@ Bobby Tables!
马龙

6

作为最近学习过Rails(一种业余爱好-从未将其用于商业级开发)并且已经在JEE和ASP.NET中工作的人,Wayne M的回答非常正确。

无论如何,这一点还有一个微妙的方面,至今尚未有人提及,但是让Rails困扰了我-强烈依赖于约定而不是配置

本质上,如果您习惯使用新的代码库来“查找文件”驱动的定向,CoC可能会在尝试使用Rails时惹恼您。对于简单地以Rails方式完成的CRUD绿地来说,这非常好(就像Wayne M所说的),但是对于任何更独特和复杂的事情,如果您尝试通过搜索来确定流程,将很难弄清正在发生的事情。文件中的内容,以查看如何连接管道。

尽管我认为,一旦您对Rails有了更多的经验,这个问题就不会那么糟糕了。对于来自oldskool Java / .NET Web开发的人,我习惯于使用非常冗长的配置流程,并且习惯于依赖于在某处看到所有内容,因此我绝对可以看到这是一个问题。


1
起初让我有点困扰,但后来没有了。能够编写数据库迁移以创建新列,然后将业务逻辑附加到新数据而无需单独的映射步骤,真是太好了。
凯文·克莱恩

@kevincline您如何在RoR中做到这一点?您可以在Java和.NET世界中使用AOP来实现。
暗恋

@crush:在Java和.NET中很痛苦,因为必须为业务逻辑使用的数据库中的每一列在映射类中显式创建和映射属性。添加一列意味着更改多个类。RoR按照惯例在运行时执行所有这些操作。您修改数据库架构,然后只需更改业务逻辑和表示层即可使用新列。
凯文·克莱恩

5

对我来说,我学习第一个X时遇到的最大问题(在您的情况下,X是服务器端网络语言/框架),就是一旦发现其他问题,我便立即开始应用X,即使可能不是最佳选择。我在这方面做得更好,但这仍然是一个强烈的趋势。

Ruby on Rails是一个不错的选择,它有一个良好的社区,大量的文档和良好的教程。但是请务必牢记其他选择,尤其是如果您开始进行更多的Web开发时。对于某些问题,RoR可能是过大的,对于其他问题而言,RoR可能是不适当的解决方案,对于不同的问题,RoR可能是最佳选择。了解它的优缺点,以及如何使用该工具。


4

我的建议是清楚地了解要完成的项目,然后开始尝试构建它。当您遇到问题时,最终将获得所有合适的工具。这种方法很好,因为您是根据简洁的问题来进行决策。

另一件事是买书。互联网教程并不影响我的经验。他们还留出了很多分散注意力的空间。当您拥有一本书时,出版商必须确保其价值,因为如果收到不好的评价,他们会赔钱。花一点钱可以节省很多时间。


但是不要忘记railscasts.com。他出色地完成了大约10分钟的主题/概念概述。我记得整个周末都在尝试让Sunspot工作,然后观看了10分钟的Railscast关于如何实施多面搜索的方法,并使其在不到一个小时的时间内启动并运行。非常值得每月9美元。
凯尔·卡尔森

1

老实说,我无法理解那些诗意地讲述Ruby-on-Rails花园漫步的人。我以经验丰富的ASP.NET-MVC,Java,PHP,Python开发人员的身份来到这里,并发现它是有史以来最可怕的浪费时间!90%的在线google-answer错误或不完整。为什么?每年都有这么大的变化吗?还是没人在乎使代码真正起作用?我花了大量时间来做简单的事情。例如,远远超出了我在C#/ ASP.NET-MVC中所需要的。当然,花了我这么长时间才学会我的原始技术。当然,ROR很简洁。如果那对您很重要。但是我发现很少清楚如何创建完成任务的代码。就个人而言,我宁愿在键盘上打字20秒钟来编写肯定有效的代码,很清楚,您可以按照它进行操作,而不是输入简短的Ruby代码2秒钟,但是直到我整夜都在寻找某种使之真正起作用的方法时,它才起作用。这是一堆可怕的臭臭的渡渡鸟。为什么?开源(如免费)代码是否没有动机使其成为优质工具?太多的脚本小子将修订和模块以及不良的文档注入其中?我不知道。但是当我终于能够摆脱第一个Ruby-Rails项目时,我发誓我再也不会陷入那种混乱了!没有动力使其成为优质工具?太多的脚本小子将修订和模块以及不良的文档注入其中?我不知道。但是当我终于能够逃脱第一个Ruby-Rails项目时,我发誓我再也不会陷入那种混乱了!没有动力使其成为优质工具?太多的脚本小子将修订和模块以及不良的文档注入其中?我不知道。但是当我终于能够逃脱第一个Ruby-Rails项目时,我发誓我再也不会陷入那种混乱了!


这篇文章很难阅读(文字墙)。您介意将其编辑为更好的形状吗?
蚊蚋

这个答案很有趣。绝对可以肯定,Rails可以节省时间。您对它的怨恨纯粹是因为您是它的新手,并希望在头几周内一切都会点击。仅数据库迁移就值得切换到Rails。
sergserg 2014年


0

我同意上述有关RoR的一些答案,过去两年来我一直在使用RoR开发应用程序。CRUD(创建,读取,更新和删除)操作非常适合简单的应用程序,可以很好地工作,它是开发简单应用程序的福音,但也有其局限性。尽管有很多宝石提供各种优点和易用性,但从本质上讲它是。开箱即用,将使您的应用程序全部扭曲。

如果您是一个使用RoR处理应用程序的大型团队,则很难摆脱工作委托。


偶尔让我惊讶的一件事是,那里看起来似乎与RoR独立的许多宝石竟然只能与RoR一起使用,而不是独立使用。很好奇为什么会这样。PS:我不是Ruby程序员,所以我可能得到了错误的印象。但是我确实偶然发现了几次。可悲的是我目前没有任何例子
Htbaa 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.