作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
Krešimir boj<e:1>伊奇的头像

Krešimir央行č我ć

Krešimir热衷于构建出色的应用程序,同时尽量减少项目中经常出现的人为复杂性.

工作经验

21

Share

有时我听到人们抱怨他们的客户,说他们 insist 在使用Rails时,他们有太多的Kool Aid. 如果他们是招聘人员, 他们几乎会因为不得不找到另一个Ruby on Rails“首席”开发人员而感到恶心. 然后他们拿出类似的东西,令人惊讶的无知 Git和PHP的比较 来证明他们的观点. “他们甚至不知道自己在要求什么,”他们说.

For us as programmers有时候,我们的客户看起来确实毫无头绪. 我们喜欢夸大这种情况. 当你仔细想想的时候, 认为一个给我钱建造东西的人在某种程度上是有限的并且“只是没有得到它”似乎是不对的. In fact, 我相信大多数客户都很清楚他们的选择,但是他们 still 我决定使用Rails.

为什么选择Ruby on Rails? 我会试着解释, 在我看来, 使得Rails非常有用,足以被大量的项目和需求认真考虑.

什么时候在Rails上使用Ruby

如果不是Rails本身,很可能没有人知道Ruby的好处. 有些人喜欢贬低Ruby,说它“对Ruby来说太简单了”,因为它有“穿着闪亮盔甲的骑士,叫做Rails”,没有Rails也是如此, “Ruby是无关紧要的”. 我不能肯定地说那是不是真的, 但我知道,如果世界错过了如此优秀的语言,那将是一个巨大的耻辱. 事实是:Rails的作者故意选择了Ruby, 他的“疯狂”赌注获得了巨大的回报. 他当时所看到的,今天许多人也能看到. Ruby在某种程度上以一种特殊的方式支持程序员,这种方式很难向“普通大众”解释。. 那么,为什么要使用Ruby on Rails框架呢? 正如宣传的那样,Ruby让程序员快乐.

虽然大多数开发人员都认为Ruby很方便,但也有一些人认为 too much so. 他们担心Ruby允许的所有自由可能会发生什么, 所有被滥用的可能性. 让我用一些猴子的补丁来说明:

"1".to_i 
#=> 1

class String
  def to_i
    提高“foobar”
  end
end

"1".to_i 
#=> RuntimeError: foobar

就是这么简单:只需要五行代码, 我们取了一个现有的类并重写了它的行为. 没有什么是神圣的——即使是一根弦. 这种特殊的错误很容易发现,但事情可能会变得更加险恶:

class String
  def to_i
    self.to_f - 1.13
  end
end

"2".to_i 
#=> 0.8700000000000001

就像这样, 我们在String类中引入了一个错误,它可以被层层的复杂性包裹并掩盖.

所以,你可能会想: 难道每个人和他们的妈妈都能把我宝贵的申请搞砸吗? 虽然这种行为看起来确实很可怕,但事实并非如此. 在五年的时间里 using Ruby我对这种行为完全没有任何问题. 这似乎有悖常理, 但话说回来, 以每小时60英里的速度向相反方向行驶的汽车也一样,道路中间只有一条细白线隔开. 实际上,这两种方法都非常有效.

这似乎有悖常理, 但话说回来, 以每小时60英里的速度向相反方向行驶的汽车也一样,道路中间只有一条细白线隔开. 实际上,这两种方法都非常有效.

另一个好处是Ruby是一个通用的工具. 因此,它有锋利的刀状边缘. 我认为成年人可以很好地处理刀具——儿童防护是为孩子们准备的。Tweet). 在IT界被当作孩子对待,会让你成为保罗·格雷厄姆的受害者 Blub paradox你认为没有某些你不懂的特征或者别人告诉你太危险的特征会更好. Of course, today we are asking “why use Ruby on Rails”; thus, this is a debate for another time. 无可否认,Ruby遗漏了其他语言拥有的一些特性(Lisp嗯,嗯)。. 总而言之,Ruby接近“语言力量连续体”的顶端。.

我和露比在一起的头几年很卑微. 我从阅读别人的代码中学到了很多东西. Sometimes, I was amazed; sometimes, I was mad; but eventually, 这些知识使我能够比以前更有效地与电脑交流. 我几乎为其他一些“繁文缛节”的语言感到遗憾,它们让你为了跳过它们而跳过它们, 同时告诉你“我只是在做对你最好的事情。, 这是为你好!”

Pragmatism

在Rails的DNA中,有一种对实用主义的深刻尊重. 结合Ruby的优点, 这种实用主义产生了优雅的解决方案,并鼓励/激发了 Ruby on Rails开发社区 做同样的事. 实用主义经常被宣传为Rails软件的宗旨, 所以这种说法并不新鲜, 但最近我的一个朋友试图向我展示它有多“酷”,这让我想起了它的真实性。 Hibernate really is. 他在挣扎. 我能感受到他的痛苦,因为他无法设置一大堆本来应该是框架默认值的选项和配置参数.

随着年龄的增长,我对人工复杂性的要求越来越高. 考虑到我在1989年11岁时就开始编写产品代码(从为我的隔壁邻居做的一个项目开始) 克利伯87年夏天),我对不必要的并发症几乎是零容忍. Rails在这方面得分很高. 这不仅仅是“约定优于配置”; 我说的是整个实用主义的心态,它在Rails社区中受到高度重视并渗透到整个社区.

表达能力

Rails是最接近英语的(除非你使用COBOL). 它使用所谓的内部 DSL,用自己的语义扩展Ruby. 构造DSL总是很危险的,因为您正在有效地开发一门新语言. 因为它是内在的, 您不需要使用外部解析器, 但在某种意义上,它感觉像是一种新的语言. Rails团队在DSL中取得了很好的平衡, 在有意义的地方使用它,很少过度使用, 表现出出色的自制力. 我认为任何程序员, 不管你是否有Rails经验, (甚至一些非程序员)可以理解这一点:

class User < ActiveRecord::Base
  设计:database_authenticatable,:registerable

  validates_numericality_of: years_of_experience, 
                            :allow_blank => true

  acts_as_taggable
  Acts_as_taggable_on:certificates,:expertise_kinds

  Validates_presence_of:first_name,:last_name,:email

  has_many:翻译

  has_attached_file :avatar, :styles => {:small => "240x240>"}
  has_attached_file:简历
...

In fact, 如果你不熟悉Ruby, 这可能看起来很奇怪——就好像它不是一门编程语言一样. 一旦您意识到它只是没有括号的方法调用,就可以开始了. Still, Rails DSL给人的感觉是用来描述需求的一种特殊语言,而实际上它只是巧妙的命名和Ruby优秀语法的固有用法.

Community

Rails有一大批提交者确保它保持在最佳状态. 许多项目都随着时间的推移而逐渐平静下来,但有了Rails,当需要做出决定时,火花仍然会飞起来. 感觉维护者(仍然)真正关心并希望人们使用Ruby on Rails并了解它的好处.

许多项目都随着时间的推移而逐渐平静下来,但有了Rails,当需要做出决定时,火花仍然会飞起来.

在Rails本身的下面,就像一颗樱桃一样,是Ruby及其强大的包管理器, RubyGems与…相当 CPAN 在包装数量方面,并考虑到CPAN的年龄, 这种说法(委婉地说)令人印象深刻. 当Rails试图制作自己的“Rails插件”时,它有过短暂的脱轨。. Fortunately, 但这行不通, 所以RubyGems保持了统一, 极好的源代码的代码编程非常聪明的个人.

一个很酷的语言之间的协同作用, 实用的web框架, 优秀的社区给了Rails一个结果 比各部分相加要好得多.

Maturity

Rails已经随处可见了. 从嬉皮士的角度来说,它甚至不再那么酷了. 在选择技术堆栈时,这是一件好事:你想要一些经过验证的东西. Rails就是这样. 我们最近写了一篇关于各种各样的 Ruby解释器和运行时 现在都有了.

Marketing

我知道,我知道. 作为一名IT专业人士,我真的应该重视 ‘serious’ 而忽略 ‘glitter’. 这可能看起来很肤浅,但让我们面对现实吧:

  1. 与竞争对手相比, Rails site looks good.
  2. Rails的第一个屏幕演员,在过去,很简单 呼吸服用. 今天看来可能没那么令人印象深刻, 但是请记住,我们都知道Java的唯一原因是每个人都对运行Java的可能性感到非常兴奋 Java Applet 在浏览器中. 这最终证明并不是那么重要,但是,这仍然使Java受到关注. 同样,这个15分钟的博客引擎视频也引起了巨大的轰动,让很多人兴奋不已.

This isn’t even about vanity; it’s about engaging as many smart people as you can to put water into the mill. 当考虑框架时,最好的地方是在人群中. 选择这些聪明人所关注的框架仅仅意味着您已经覆盖了更多的基础. 这就引出了我的下一个观点.

(不是)重新发明轮子

我对小型框架情有独钟. 我喜欢能够理解一个特定框架在做什么以及为什么. 从这个意义上说,Rails有点臃肿,有时甚至是压倒性的.

这里的困境是:你想要一遍又一遍地写同样的东西多少次? 我相信有些可以重写得更好,但这需要时间——很多时间. 允许Rails为您做的事情越多, 您就不必担心重写或重新实现您的功能.

Rails(就像他们说的)“包含电池”。. 如果您热衷于稀疏性,或者您觉得需要对所有事物的工作原理有广泛的了解,那么这不是一件好事. 在实践中,如果你放下你的恐惧,它似乎确实有效. Rails对您需要的几乎所有东西都有合理的默认值,并且足够模块化,可以避免将您逼入困境.

Conclusion

再问问自己,为什么要使用 Ruby on Rails? Rails适用于与单页JavaScript应用程序竞争的最先进的公共网站, 而复杂的企业核心系统应用程序通常看起来有点“难看”(使用更通用的, 低保真度UI), 但是用大量复杂的业务规则和逻辑来弥补这个缺陷. 除了这些Ruby on Rails用例, 它的好处是它是多功能的,能够与时尚和强大的竞争.

对于大多数常见问题, Rails有一个组件供您使用,几乎是开箱即用的,其文档始终高于平均水平(不知何故), Rails核心团队说服贡献者写文档很酷(尽管我们都知道不是这样), 写得好, 简洁省时的文件).

当你抛开独角兽和周五拥抱, 最终,您将得到一个强大的框架,可以用于未来的游戏规则改变者和下一个中间路线的商业站点. 还有你的顶级宝石池, 在你的指尖上有一个兵工厂,它实现了计算机编程中一些最聪明的想法. With no fuss.

就这一主题咨询作者或专家.
预约电话
Krešimir boj<e:1>伊奇的头像
Krešimir央行č我ć

Located in 克罗地亚的萨格勒布

Member since 2013年1月24日

作者简介

Krešimir热衷于构建出色的应用程序,同时尽量减少项目中经常出现的人为复杂性.

Toptal作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.

工作经验

21

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

Toptal开发者

加入总冠军® community.