铁路的'陷阱'和学习曲线 - 它会永远停止吗?

Fir*_*lem 8 ruby java spring ruby-on-rails

我已经开发了几个星期的新rails项目,虽然我对这些令人敬畏的插件和框架中的一些非常棒的功能感到惊讶......我也有点失望.我很担心

我想我弄错了.

我应该按下,还是回到我熟悉的地方?(Java /春)

  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动作正在进行!即使对于具有1个数据库查询的页面,也需要100-200毫秒.这太疯狂了.

  11. 文档通常是过时的.例如,试图覆盖Devise中的内容很痛苦,因为文档实际上告诉我做错了.只有经过几个小时的谷歌搜索并在另一个论坛上等待48小时后,我才能让别人告诉我我需要做什么.我想做的就是让登录表单拒绝User.enabled为false的用户.而已.事实证明,我压倒一切"活跃?" 而不是"active_for_authentication?" - 这是RDoc中的一个错误.

  12. ORM表现得非常奇怪,完全不直观.关联新对象时,插入/更新的工作方式不同.它也不像Hibernate那样级联...这让我怀疑它不跟踪脏对象?如果是......那么为什么默认情况下没有设置级联?像这样的事情几乎不是很好的违约.Rails不应该在良好的默认值下表现出色吗?

2周后,"陷阱"的数量并没有真正放缓.我真的很担心和害怕.我知道Java不存在问题和问题,但我一般每个问题大约2-3次 - 而不是一周30次.

当你考虑平台的稳定性,快速性和可预测性时,我几乎认为使用Java/Spring时缺乏灵活性并不是一个负担.你可能会写更多的代码,但你确切地知道发生了什么......你从来没有真正处理过沉默的失败......事情的确往往更加可靠.

我开始质疑使用Rails进行这个新项目.

Sco*_*ott 4

你能做的最好的事情就是掌握“使用 Rails 进行敏捷 Web 开发”,当我几年前开始学习时,阅读和研究这本书中的示例确实帮助我理解了事情应该如何工作,它也充当了非常好的参考资料,每当您想阅读某些主题时都可以深入研究。

最新版本似乎是: http://www.amazon.co.uk/Agile-Development-Rails-Pragmatic-Programmers/dp/1934356549/ref=sr_1_1 ?ie=UTF8&qid=1305991885&sr=8-1

  • 7 张桌子的连接甚至没有那么难理解……在我“偶然”找到正确的方法之前,我只是被引入了六次歧途。首先是“&”...这是谷歌首先建议的。然后“合并()”。但是当你想用 2 个 merge() 来做 3 个模型时,它就停止工作了..所以你不需要再使用 merge 了。不断地……它永远不会结束。 (3认同)