java - Rail 的 'Gotchas' 和学习曲线 - 它会停止吗?

标签 java ruby-on-rails ruby spring

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




10年前关闭。




几个星期以来,我一直在开发一个新的 Rails 项目,虽然我对这些出色的插件和框架中的一些非常棒的功能感到惊讶……但我也有点失望。我很担心。

我想我犯了一个错误。

我应该继续,还是回到我熟悉的地方? (Java/Spring)

  • 似乎除非您正在寻找“简单示例”,否则在谷歌上搜索规则的异常(exception)情况、特殊情况等确实会影响生产力,并且越来越成为我的常态。
  • 来自主站点、博客、截屏视频等的文档和示例大多已过时。对于那里的每 5-10 个示例,其中 1 个实际上是正确的。
  • 做任何应该“正常工作”的新事物几乎从不做。我尝试遵循文档和示例,但我的结果似乎有所不同,我发现文档和示例中从未提到过的问题。这似乎实际上一直在发生。
  • 我尝试使用 CoffeeScript 并将其与 Rails 集成的经历是一场灾难。每当发生“编译器错误”时都无法看到问题所在,这令人非常沮丧。
  • ActiveRelation 真的很棒,直到您需要进行连接 7 个表的查询。然后它开始崩溃。我认为您可以在 Hibernate 中更快地完成 7 表连接查询,并在您第一次学习时可靠地完成。
  • 在 Rails 中测试实际上非常困难。 “魔法”太多了。由于 Ruby 是动态的,我不知道我需要调用什么来适本地测试一些东西。规则似乎总是有异常(exception)。

    例如,Devise 像您期望的那样工作……直到您想在 helpers 中测试 Devise。它只是行不通,因此您必须在测试中发明设计生成的方法以使测试通过。您不需要为 Controller 执行此操作。

    有一些博客教如何使用 Rails 进行测试,但它们非常琐碎且没有多大帮助。其中一些实际上很糟糕。例如,我发现如何以比我发现的许多博客优越得多的方式有效地测试验证。我只是发现在测试方面我经常独自一人。
  • 当您切换到生产时,为什么图像和样式表无法正常工作?疯了吧。如果你用谷歌搜索,很多人会问这个问题……但是这个框架并不“正常工作”。

    我害怕最终部署这个应用程序。生产版本似乎不像开发版本那样工作。害怕。
  • 出于某种原因,在添加 jquery-rails 和设计之后,在 ajax 请求期间没有通过身份验证 token 。我必须添加 4 行 javascript 代码才能使其工作。这花了我 5 个小时。在 Java 中,因为你有适当的 session ,你甚至不需要考虑这种类型的东西。
  • 测试运行真的很慢。我有大约 780 个测试,它已经比一个有 1800 个测试的 Java 项目花费的时间长得多。
  • 在浏览器中测试应用程序真的很慢。渲染一些页面大约需要 1/4 秒……而且甚至没有那么多 ORM 操作正在进行!即使对于具有 1 个数据库查询的页面,也需要 100-200 毫秒。这太疯狂了。
  • 文档经常过时。例如,试图覆盖 Devise 中的东西是一种痛苦,因为文档实际上告诉我做错了事。只有在谷歌搜索数小时并在另一个论坛上等待 48 小时后,我才能够有人告诉我我需要做什么。我想要做的就是让登录表单拒绝 User.enabled 为 false 的用户。就是这样。事实证明,我覆盖了“主动?”而不是“active_for_authentication?” - 这是 RDoc 中的错误。
  • ORM 的行为非常奇怪,根本不直观。关联新对象时,插入/更新的工作方式不同。它也不会像 Hibernate 那样级联......这让我怀疑它没有跟踪脏对象?如果是...那么为什么默认情况下不设置级联?像这样的事情几乎不是好的默认设置。难道Rails 不应该在良好的默认值方面表现出色吗?

  • 两周后,“陷阱”的数量并没有真正放缓。我真的很担心和害怕。我知道 Java 对陷阱和问题没有免疫力,但我通常每个月遇到 2-3 次问题——而不是一周内遇到 30 次。

    我几乎在想,当您考虑平台的稳定性、速度和可预测性时,使用 Java/Spring 时缺乏敏捷性现在并不是什么负担。你可能会写更多的代码,但你确切地知道发生了什么......你从来没有真正处理过静默失败......而且事情确实会更可靠地工作。

    我开始质疑在这个新项目中使用 Rails。

    最佳答案

    你能做的最好的事情就是掌握“使用 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

    关于java - Rail 的 'Gotchas' 和学习曲线 - 它会停止吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6082609/

    相关文章:

    java - SearchView 语音监听器

    java - swt中两个复合体之间如何通信

    java - 什么取代了 Hibernate 5 中的 Hibernate.entity()

    ruby-on-rails - 缺少 puma 和 nginx puma.sock 的 Rails 生产

    ruby-on-rails - 如何覆盖 rails new/edit 表单上的标题

    ruby TCPSocket : Find out how much data is available

    java - 在自定义 java 库模块中编译 android 模块时出现 Gradle 警告 "unspecified depends on libraries but is a jar "

    sql - 优化类似 mysql 的查询

    ruby-on-rails - Ruby 2.2:PG::CharacterNotInRepertoire:错误:编码 "UTF8"的无效字节序列

    ruby - 除了在 Ruby 的每个 do 循环中使用计数器变量之外,还有其他方法吗?