草庐IT

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

coder 2024-03-13 原文

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,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 - Rail 的 'Gotchas' 和学习曲线 - 它会停止吗?的更多相关文章

    1. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

      我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

    2. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

      我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

    3. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

      我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

    4. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

      在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

    5. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

      我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

    6. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

      我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

    7. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

      如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

    8. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

      我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

    9. java - 等价于 Java 中的 Ruby Hash - 2

      我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

    10. ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作 - 2

      关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request

    随机推荐