我目前正在尝试确定要在Web开发中学习和使用的服务器端语言,虽然相对容易获得有关为什么x,y或z是一件好事的信息,但要弄清每种缺点都很难其中。
特别是,我很好奇与其他给定语言/框架相比,学习和/或使用Ruby on Rails有哪些缺点。
我目前正在尝试确定要在Web开发中学习和使用的服务器端语言,虽然相对容易获得有关为什么x,y或z是一件好事的信息,但要弄清每种缺点都很难其中。
特别是,我很好奇与其他给定语言/框架相比,学习和/或使用Ruby on Rails有哪些缺点。
Answers:
从经验上来讲:缺点是您过于依赖Rails框架。如果您只编写简单,全新的CRUD应用程序,而这些应用程序正好落在Rails的“最佳位置”,那么这是一件伟大而美好的事情。您的生产力将飞速增长。但是,当您不得不在最佳位置之外做某件事时-与现有数据库进行交互,与未定义JSON或XML API的另一个应用程序对话,实现复杂的工作流程时,Rails将成为您的敌人。这是可以使用Rails来做这些事情,但是它“违背了原则”,因此您基本上是自己弄清楚如何去做,因为社区通常只会回答“不要这样做,这不是Rails”方式”-这可能会导致生产力下降或代码非常混乱,因为您基本上必须在Rails框架周围进行修改。
此外,还有潜伏的缺点:其他所有东西看起来都很难看而且很笨拙。一旦您品尝了Rails的甜蜜,甜蜜的花蜜(好吧,在这里进行了传布……),其他所有东西都将s折。从Rails返回到PHP或ASP.NET WebForms或Java,就像在茂密的花园中嬉戏后在指甲上行走;您不会以相同的眼光看到其他语言/框架,尽管您可能仍然会欣赏它们,但是您会暗自渴望Rails的爱慕拥抱。
我尝试过几次学习RoR,而我最大的问题总是尝试使软件包和文档正常工作。文档的问题在于它似乎总是过时了(或非常基础)。我从网站上获得了基础知识,但除此之外,所有内容似乎都过时了(即使是我购买并最终归还的书)。另一个可能是缺点的事情是某些库所具有的依赖关系,以及它们如何与本库指出的冲突。
我稍后想到的而不是发表评论,我只是编辑我的答案是:RoR有机会为您破坏Ruby。我知道当我尝试它时,它使我认为“ Ruby很愚蠢”。几个月后,我决定试一试Ruby,并热爱该语言,正是该框架使我讨厌该语言。我并没有涉足太多,但是当我这样做时,我真的很喜欢Sinatra。我认为大多数人从Sinatra摆脱RoR感到高兴。
rake db:migrate
。另一方面,我发现Sinatra更加简单易懂。无论如何,我更喜欢以自己的方式进行设置,而Rails应用程序的基本结构对我来说似乎太复杂了。
如果这是您的第一种服务器端语言,那就和其他语言一样好。要做的事情是专注于一个,在您掌握了它之后,探索其他人并得出自己的结论。
我每天都使用RoR和ASP.NET,但奇怪的是,我更喜欢ASP.NET世界,但这更多地与个人哲学有关,而不是与语言或体系结构本身有关。(我有点控制狂,我个人倾向于使用强类型语言)。
无论如何,我说放手一搏。RoR是一个很好的工作环境,但是在您直接进入Rails之前,请先熟悉Ruby作为一种语言。除了网络内容之外,如果您不得不管理* nix框并且可以节省大量时间,那么Ruby是一种非常酷的脚本语言。
作为最近学习过Rails(一种业余爱好-从未将其用于商业级开发)并且已经在JEE和ASP.NET中工作的人,Wayne M的回答非常正确。
无论如何,这一点还有一个微妙的方面,至今尚未有人提及,但是让Rails困扰了我-强烈依赖于约定而不是配置。
本质上,如果您习惯使用新的代码库来“查找文件”驱动的定向,CoC可能会在尝试使用Rails时惹恼您。对于简单地以Rails方式完成的CRUD绿地来说,这非常好(就像Wayne M所说的),但是对于任何更独特和复杂的事情,如果您尝试通过搜索来确定流程,将很难弄清正在发生的事情。文件中的内容,以查看如何连接管道。
尽管我认为,一旦您对Rails有了更多的经验,这个问题就不会那么糟糕了。对于来自oldskool Java / .NET Web开发的人,我习惯于使用非常冗长的配置流程,并且习惯于依赖于在某处看到所有内容,因此我绝对可以看到这是一个问题。
我的建议是清楚地了解要完成的项目,然后开始尝试构建它。当您遇到问题时,最终将获得所有合适的工具。这种方法很好,因为您是根据简洁的问题来进行决策。
另一件事是买书。互联网教程并不影响我的经验。他们还留出了很多分散注意力的空间。当您拥有一本书时,出版商必须确保其价值,因为如果收到不好的评价,他们会赔钱。花一点钱可以节省很多时间。
老实说,我无法理解那些诗意地讲述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项目时,我发誓我再也不会陷入那种混乱了!
我建议您看一下评估不同语言/文字的流行程度的索引。这是一个可能有用的链接:流行的专业使用的与Web相关的语言。
这显示了基于在线职位发布搜索的网络相关语言的相对流行度。
我同意上述有关RoR的一些答案,过去两年来我一直在使用RoR开发应用程序。CRUD(创建,读取,更新和删除)操作非常适合简单的应用程序,可以很好地工作,它是开发简单应用程序的福音,但也有其局限性。尽管有很多宝石提供各种优点和易用性,但从本质上讲它是。开箱即用,将使您的应用程序全部扭曲。
如果您是一个使用RoR处理应用程序的大型团队,则很难摆脱工作委托。