Rail的“陷阱”和学习曲线 - 它会停止吗?

8

我已经开发了一个新的Rails项目几个星期了,虽然我对框架中一些真正出色的插件和功能感到惊讶...但我也有点失望。我很担心。

我认为我犯了一个错误。

我应该继续前进,还是回到我熟悉的Java/Spring?

  1. 看起来,除非你在寻找“简单的例子”,否则搜索规则的异常、特殊情况等会严重影响生产力,并越来越成为我的常态。

  2. 主站点、博客、屏幕录像等的文档和示例大多已过时。在那里面每找到5-10个示例中,只有1个是正确的。

  3. 做任何新事物都应该“正常工作”,但几乎从不正常。我尝试遵循文档和示例,但我的结果似乎各不相同,并发现文档和示例中从未提到的问题。实际上,这种情况似乎经常发生。

  4. 我尝试使用CoffeeScript及其与Rails的集成,但是失败了。每当出现“编译器错误”时无法看到问题超级令人沮丧。

  5. ActiveRelation真的很棒,直到您需要进行连接7个表的查询。然后它开始崩溃。我认为您可以通过Hibernate快速完成此7个表连接查询并可靠地完成第一次学习。

  6. 在Rails中进行测试实际上非常困难。有太多的“魔法”正在发生。由于Ruby是动态的,我不知道我需要调用什么来适当地测试某些东西。总是似乎有例外。

    例如,Devise的工作方式就像您期望的那样……直到您想要在助手中测试Devise。它根本不起作用,因此您必须在测试中发明Devise生成的方法以使测试通过。对于控制器,您不需要这样做。

    有一些博客教如何使用Rails进行测试,但它们非常琐碎且没有多大帮助。其中一些实际上很糟糕。例如,我发现如何有效地测试验证比我找到的许多博客都要好得多。我只是发现在测试时经常是自己一个人。

  7. 为什么切换到生产后图像和样式表无法正常工作?这太疯狂了。如果您搜索,会有很多人问这个问题……但框架并没有“正常工作”。

    我真的很害怕最终部署这个应用程序。生产版本似乎与开发版本完全不同。可怕。

  8. 出现jquery-rails和devise之后,某种原因导致在ajax请求期间未传递身份验证令牌。我必须添加4行JavaScript代码才能使其工作。这花了我5个小时。在Java中,由于您拥有适当的会话,您甚至不需要考虑这种类型的事情。

  9. 测试运行非常缓慢。我大约有780个测试,它已经比具有1800个测试的Java项目花费更长时间。

  10. 在浏览器中测试应用程序非常缓慢。渲染某些页面需要大约1/4秒……而且没有太多ORM操作!即使对于只有一个数据库查询的页面,也需要100-200毫秒。这太疯狂了。

  11. 文档经常过时。例如,尝试覆盖Devise中的内容很麻烦,

    经过两周的使用,"陷阱"的数量并没有真正减少。我非常担心和害怕。我知道Java并不免疫于陷阱和问题,但通常一个月只会遇到2-3次问题而已,而不是一周30次。
    我几乎认为,在考虑平台的稳定性、速度和可预测性时,使用Java/Spring时缺乏敏捷性并不是太大的负担。你可能需要写更多的代码,但你确切地知道发生了什么......你从来不会真正处理无声的失败......事情往往更加可靠地工作。
    我开始质疑在这个新项目中使用Rails了。

我应该停下来还是继续前进?这是一个错误吗?Rails曾经被认真对待过吗?我不知道。我只是害怕和担心陷阱和问题永远不会停止:( 这并不是因为我不理解这些概念...我真的很理解。Rails非常适用于简单的事情...但每当我想要做一些“更复杂”的事情时,就会遇到问题。有时候,应该“只是工作”的简单事情实际上却不起作用。这实际上使人沮丧。因为它是如此“神奇”(更不用提“沉默”),所以我不知道如何修复它。 - Fire Emblem
4
你的问题听起来只是缺乏经验。如果我尝试用Java编程,我相信我也会遇到同样的问题。 - DGM
你可以说缺乏经验是在做任何事情时遇到问题的原因,即使不涉及编程。我认为文档应该更准确 - 这将解决很多问题。此外,你不应该去互联网上寻找如何做某事。这有点违背了提高生产力的目的。我认为,除非您计划在Rails上使用一年以上,否则如果您只打算花2个月来制作新项目,改变平台可能并不值得。 - Fire Emblem
有趣的是,那些你真正找到有用的问题或话题,往往会被关闭为“不够建设性”。为什么不让这些问题继续存在呢?好的问题/讨论会被高评价并置于顶部,而不好的则会被忽略。这是一个非常好的问题。 - Peter Andersson
我想补充一点,Rails 最大的问题在于版本之间的巨大变化,这使得90%的教程/博客/答案都在一次大变动中失效。为什么不让 Rails 自行发展,等待几年,避免大规模重写呢? - Peter Andersson
1个回答

4

我已经浏览了目录,对书中的很多内容都有了深刻的理解。我已经构建了应用程序的大部分。从一些评论中,我得到的印象是你们认为我几乎不能让控制器或1个ajax调用工作。我的问题在于文档非常糟糕,无法精确地说明事物的工作方式,尤其是对于复杂的事物或例外情况。在Rails中没有关于进行7表连接的示例。我甚至没有看到过做2表连接的示例,更不用说7表连接了。这就是问题所在。 - Fire Emblem
3
进行七个表的联接并不难想出...只是在找到正确方法之前我被误导了好几次。首先遇到的是"&",这是谷歌最先建议的。然后是"merge()"。但当你要使用两个"merge()"处理三个模型时,它就无法正常工作了...所以你需要不再使用"merge()"。一直这样下去...永无止境。 - Fire Emblem

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