【问题标题】:What are the coolest Ruby on Rails features, why choose it? [closed]什么是最酷的 Ruby on Rails 功能,为什么选择它? [关闭]
【发布时间】:2010-10-17 15:31:02
【问题描述】:

在我问这个问题之前,我在 SO 上查看了“Ruby on Rails”的搜索结果。找不到太多,但以下 (found on this page) 让我很开心

就个人而言,我开始使用 .html,转向 php,尝试了 ruby​​(讨厌它),发现了 Python / DJango.. 并且一直很开心。

现在是交易。我个人还没有学习 Ruby on Rails 的意图,但这是我在 Uni 的小组演讲的主题(我的伙伴选择了 RoR 主题)。对学生提出家庭作业类型的问题怀恨在心的人应该立即离开。

这个问题是为那些觉得它很棒的 RoR 人准备的。我希望找到那些声称 RoR 是最好的(在 RoR 网站上可以找到令人惊叹的推荐的作者)。是什么让 RoR 如此出色?您希望今天的年轻人在他们离开大学获得学位之前了解它吗?尝试提出一些可以在他们脑海中根深蒂固的建议,也许在离开 Uni 后以 RoR 的方式引导他们。

您的回答不仅有助于我的演讲,而且可能成为许多人的启蒙之源。

【问题讨论】:

  • 试试几天前发布的 ASP.NET MVC 怎么样,它结合了 Django、Ruby on Rails 和其他类似框架的所有酷特性。 asp.net/mvc
  • 那么这应该是community-wiki。
  • ASP.NET MVC 拥有 Rails 的所有酷炫特性?真的吗?
  • 老兄,asp.net 是我用过的最笨拙的 MVC 框架之一。
  • +1 致 John T。我已经使用 Rails 多年,并在 .NET MVC 中完成了一个中大型项目(从 RC 的 beta 版本开始) .这是朝着正确方向迈出的非常好的一步,但与“其他”框架的“所有酷特性”相去甚远。

标签: ruby-on-rails ruby


【解决方案1】:
  • ActiveRecord 的动态查找器:

    Person.find_by_name_and_company_id('Jorge Luis Borges', 42)
    
  • rjs,用 ruby​​ 编写 javascript:

    page['element_id'].insert_html :bottom, :partial => 'comment'
    
  • ActiveRecord 的作用域

    class Shirt < ActiveRecord::Base
      named_scope :red, :conditions => {:color => 'red'}
      named_scope :dry_clean_only, :joins => :washing_instructions, :conditions =>  ['washing_instructions.dry_clean_only = ?', true]
    end
    

调用 Shirt.red 将使用 "color = 'red'" 条件查询数据库 最酷的部分是,如果您组合多个范围,例如:

      Shirt.red.dry_clean_only

它将只构建一个查询,包含满足两个范围所需的所有条件和连接。

  • ActiveRecord 的迁移,能够使用活动记录管理数据库结构和数据,就像在应用程序代码中一样,使用最少的 sql。

【讨论】:

  • +1 用于 ActiveRecord 的范围功能和动态查找器;但我不同意 rjs,理由是我不使用 Scriptaculous。
  • Prototype/Scriptaculous 不是我理解的要求。我相信使用插件的 RJS 也支持 jQuery。
  • 你不觉得这把细节抽象得太多了。为了方便而牺牲了理解。没有?
【解决方案2】:

工具是用来解决问题的。无论您是在谈论木工车间还是程序员车间的工具都没有关系。 Rails 给我留下深刻印象(现在仍然如此)的是,它是从用于构建真实世界 Web 应用程序的框架中提取出来的,并且在使用它来构建真实世界 Web 应用程序后被扩展或更改它的人反复改进。这不仅仅是学术活动。

它解决的一些具体问题:

  • 快速入门。如果您希望快速启动一个 Web 应用程序,那么您有什么比指定现有目录结构(基于 MVC)的框架更好的选择,该框架具有大量代码生成器,并且已经为您预先做出选择组件,例如 JavaScript 库、测试支持、ORM 等。您可能不同意所有选择,但您可以假设它们并拥有适用于 80% 或更多项目的东西,如果您有偏好,可以稍后换掉。

  • 长期可维护性。迁移为您提供了在代码更改时向前移动数据的方法,这在任何实际应用程序中都会发生,但大多数框架根本没有考虑到这一点。将应用程序的所有部分分离到已设置的目录层次结构中,其中包含用于测试、数据库、配置等的区域。再次有助于项目的长期维护。

  • 减少人为错误。配置文件为您提供了额外的人为错误机会。逻辑约定一旦学会就可以避免经典的错误输入文件名或配置文件中的类名错误。

  • 承认不同的发展模式。 Rails 已内置支持为开发、测试和生产设置不同设置的想法。真实的应用也有这种情况,但它们周围的框架通常不能适应它,你最终不得不交换配置文件来达到同样的效果(参见上面的人为错误)。

  • 良好做法。我上面提到的几件事包含并鼓励良好的编程实践(MVC、标准化项目布局等),但 Rails 经常明确地鼓励它们,而不仅仅是隐含的。要证明这一点,您只需看看它对测试驱动开发的内置支持即可。

【讨论】:

  • 哇,感谢这篇文章。 +1
  • +1 - 这也是我的原因。
【解决方案3】:

三年前我在博客中详细介绍了why I love Rails,但对我来说,第一个很酷的功能是它使开发 Web 应用程序变得简单而有趣。

【讨论】:

  • 我真的很喜欢这个博客。出于与我相同的原因,开始使用 Delphi。我仍然喜欢它,但使用它越来越少......感谢链接
  • +1 的乐趣因素。在版本 4 和 6 的日子里,我也使用过 Delphi。
  • 我完全同意你的看法。我是 Java 的忠实粉丝。我想成为一名 Java 程序员,但一开始没有人愿意雇用我,因为我还小。几年后,我掌握了足够的知识并开始担任企业开发人员。经过这么多年的努力,我意识到我每天的工作是 10% 的时间编写代码,以及 90% 的重新部署和重启服务器。即使我不得不改变一件小事,也需要大约 10 分钟。我们的客户为此付出了数百万欧元……我非常失望。我将回到 PHP 并继续使用 Rails。干杯!
【解决方案4】:

举几个例子:

  • 大型开发者社区(不是说 python 没有)
  • 关于配置岩石的约定
  • 可与 JRuby/Warbler 一起使用,以使 rails 在 Java 应用程序服务器上运行。在尝试将 Enterprise 拖入 21 世纪时非常重要(Django 可以与 Jython 一起使用以与应用程序服务器一起工作,但还不够成熟)。
  • MVC 框架有助于保持您的应用程序结构化。
  • 脚手架和发电机让您的项目顺利进行。

Rails 并不试图成为开发 Web 应用程序的唯一方式,这不是本意。它满足了一组特定的需求。

【讨论】:

    【解决方案5】:

    这不是与 Python 的比较 - 这是我喜欢的东西的一般列表。

    • 与 Java 相比,我编写的代码要少得多
    • ...而且我做对的代码可读性和可维护性都很好
    • 我很少需要考虑某些代码所在的位置或如何处理常见任务 - 它只是有它的位置(例如,迁移是内置的)
    • 您最终不会在一个项目中使用多种不同的技术(Java、EJB、Hibernate、JSP、SQL DDL、Ant、XML、taglibs)
    • 解释而不是编译可以为您节省大量开发时间

    【讨论】:

    • 这些确实是一些非常好的观点。也许应该将此作为单独的问题提出,但不会。只是出于我自己的好奇,您认为有 Delphi/Java/PHP/SQL 经验的人需要多长时间才能学习 RoR?
    • 这真的取决于人。我有 Java 背景,我在一周内就很有成效,在几个月内就有了很好的理解。如果从头开始,学习 RoR 会比 JSP / Struts / Spring / Hibernate 容易得多。
    【解决方案6】:

    对我来说,其中一个主要原因是它将乐趣带回到了网络编程中。 突然间,事情变得简单而触手可及。你不需要几个月的代码处理和 不需要编写大量代码。只需几行代码,您就可以完成一些非常了不起的事情。

    感觉很好:)

    【讨论】:

      【解决方案7】:

      老实说,我更喜欢 Django 的设计而不是 rails,但我更喜欢 ruby​​ 而不是 python。这是个人的事情,因为我知道很多人有相反的看法,但我发现 ruby​​ 是我用过的最优雅的语言之一。

      【讨论】:

        【解决方案8】:

        我使用 Rails 的主要动机是 ruby​​。在我找到 ruby​​ 之前,我接触了很多语言,但我从来没有觉得自己擅长任何一种语言。当我遇到红宝石时,一切都变得有意义。这是一门美丽的语言;易学难精。

        我使用 rails 是因为它适合我作为 web 开发人员的需求并且功能非常丰富。

        【讨论】:

        • 我阅读了 John Topley 的博客,了解他为什么喜欢 Rails,并且对它产生了某种喜爱(尽管我从未尝试过)。很高兴听到你的声音,也觉得很棒。但有什么特别的吗? Ruby 语言 - 易于学习。将添加到我的演示文稿中。年轻人尝试 RoR 的动机还有哪些?
        • 这是一门学习 oo 编程的好语言。我在学习期间得到了一些 java 和 php,但是当我制作 ruby​​/rails 时,我真的得到了 oo 编程,其中一切都是对象。为什么选择 Rails?年轻而充满活力的社区,大量的插件,所以你不必每次都重新发明轮子,db-agnostic 等等。
        猜你喜欢
        • 1970-01-01
        • 2010-09-09
        • 2010-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-30
        • 1970-01-01
        相关资源
        最近更新 更多