重要参考文章:
1.Rails 信条(由Rails的创始人DHH先生撰写)

是呀,为什么要XXX呢?

  这是一个突如其来的问题。而即使是“你为什么要喝水?”样简单问题,也需要解释清楚前因后果才可回答清楚。比如:从客观角度回答“因为我口渴需要补充水分,我的选择有星巴克咖啡、啤酒、雪碧、可乐、果汁、水,而我要开车所以排除了啤酒,虽然我喜欢甜味饮料,但我正在减肥,所以排除了含糖饮料,所以选择了水” 。或从主观角度回答 “我口渴时就是喜欢喝水,这是我的默认选择,人类懒惰本能让我不想思考其他选项”。——大部分情况下“选择的理由”可以归结于主观的“我就是喜欢”客观的“此选项的整体利益最大”

因Rails是一个Web开发框架,这个问题假定了你已经决定要学习Web开发。这也其实引出了上一层的隐藏问题:
为何选择学习Web开发?

还有更上一层问题:
为何选择学习IT开发/编程?而不是学习金融、房地产、保险、资产管理、量子物理、再生医疗、火箭科学、网红主播…?

硬要说还有上一层问题:↓
为何要学习?而不是玩?

然后最终上升到了哲学或生物学层面的问题:
为什么要活着?
——想要以完美地以逻辑解释选择,最终会是没完没了的。所以我们就此打住,仅仅回答从众多的Web开发框架中选择Rails的理由:

主观理由:

  1. 我就是喜欢用Ruby语言。
    用别的语言做一个简单的功能,都要加各种括号[]{},导入一堆库,总要写出一坨。写出来丑,读起来烦。
  2. 我坚持Minimalism(极简主义)。
    想要一招鲜吃遍天,而Rails的All in One特点刚好符合我的要求。

开发者学习和使用Rails客观优势:

  1. 更易学习:
    相对其他Web框架,得益于MVC架构的清晰分工与Ruby语言的易学易记,灵活的语法让约束更少,Rails能让使用者更快掌握全栈开发。
  2. 开发出同样成果的门槛更低:
    想要开发出一个Web应用,仅需拥有最少量的HTML、CSS、JavaScript、数据库的知识加上数天~数周的Ruby与Rails的学习。更有可能让初级开发者达成在别的框架下的中/高级开发者才能做出的成果。
  3. 开发迅速:
    依靠大量的默认约定,使建站所需的代码量最少化。
  4. 一步到位带来的安心感:
    R(Routing路由)、C(Controller控制器)、M(Model数据库访问)、V(View前端生成)这些Web基本功能应有尽有。
    T(Test自动测试)、A(Asset资源生产管线)这些附属功能也十分强大易用。
    这就是All in One。你所能想到的需求,Rails很可能已经早已内置或有成熟的第三方插件(库),你可以专注于开发本身,而不必为了重新造轮子花上大把的时间。
  5. 沟通成本低:
    Rails拥有一套独特的优雅的线性逻辑,使用者会倾向于遵守这套逻辑,这使得使用Rails的团队能付出更少的培训成本来以纳新的开发者,而开发者也更易加入其他团队并很快开始产出。

Rails本身与其他框架的对比的优势:

  1. MVC架构的各个组件分工明确,易学易懂
    当然其他框架也在一直学习Rails的MVC架构,但会统合/分离一些工作,
  2. 与时俱进,包容并重。
    进步比稳定重要,Rails在不断地加入新功能,并温柔地取消旧功能。否则旧有的小缺陷会积累从而变成重大缺陷。
  3. 有一套自己的生态,避免选择困难。
    如果说Rails是Mac,那么Spring/Django框架就是Windows,前者讲究一套完整优雅的线性逻辑(关注质量),而后者提供了更多自由发挥的空间(关注数量)。但作为入门/业余的Web开发者,过度的自由反而会成为累赘,而Rails在注重质量的特点让人更易上手。简单性+稳定性 与 复杂性+全能性不可兼得,而我建议选择入门Web开发时选择前者。
  4. 插件众多且精炼
    欧美、日本、中国国内的开发者众多,相应的也诞生了大量优秀的插件。
  5. 文档、书籍参考资料少而精、社区气氛好。
    有别于Java,JavaScript、Python等语言的使用者数量过于庞大,水平差别巨大,目的也各不相同,导致网上的参考文档杂乱,内容质量不佳(本人感想)。与此相比,Ruby语言的使用者大部分都会使用Rails做Web开发,目的一致比较好沟通,这也使得社区氛围较好,你有更高概率能找到想要的参考资料,或者去社区提问寻求帮助。