书籍 Ruby 自学书单

yue · 2015年01月18日 · 最后由 isay 回复于 2015年05月21日 · 11735 次阅读

比起 C, C++, Java 等语言,Ruby 相关书籍真是少得可怜。 本文罗列那些年楼主自学 Ruby 看过的书,按照入门到中级到深入的顺序,希望对于想学习 Ruby 的人有帮助。

补充: 这个帖子总结得更好: https://ruby-china.org/topics/768

入门

  • The Well-Grounded Rubyist, Second Edition, 2014, David A. Black

the well grounded rubyist

入门书籍不在于多,就是有那么一本全面的介绍语言的基本语法,核心库,再多带那么些高级特性就够了。 这本是第二版,发行于 2014 年 7 月,针对的是 Ruby 2.1 版。 它涵盖了语言的基本特性,包括了 Ruby object, class, module, control flow 等这些基础; 同时深入的介绍了 Ruby String, Symbol, Collection, Regular Expressions,还有 I/O; 最后一部分是 Ruby 动态特性的入门,介绍了 Ruby 下的 callable and runnable objects, 如 lambda, proc, Proc. 作者是一个耐心的老师,用生动的比喻来解释 Ruby 下的概念,再用很多的例子来引导教学,你可以跟着书一起练习熟悉 Ruby。 书面这位优雅的女士,暗喻的是 Ruby 优雅的语法,而这本书也恰到好处的把她勾勒了出来。

  • Eloquent Ruby, 2011,Russ Olsen

如果你是 Java 或者 C# 的开发员转到 Ruby, 难免会把编写前两种语言的习惯带到 Ruby 来。这也就使得你的代码看起来不那么 Ruby。 这本书就是针对专治以上症结的。不单是从写法上,还从思考角度上,让你更好的利用 Ruby 的特性,从 Ruby 的角度编写程序。 它不单止于介绍 Ruby 的语言特性,如 symbol, module, 还指出了使用它们的最佳实践。 同时它还是一本字典,其中解释了 DSL, Framework, Gem, Ruby Implementation 这些概念,为你通往下一个学习阶段做好准备。 如果第一本书是教你扎马步,那么这本书就是让你修炼轻功了。

  • The RSpec Book, 2011

Ruby 社区是很重视 测试的,无论是 TDD 还是 BDD。 RSpec 是 Ruby TDD 的一个测试框架,以其语言化的语法在社区里流行。 书从介绍 RSpec 的基本语法,特性开始,用实例来描述如何从 TDD 的角度做开发,如何做 Mock 和 Stub,如何让测试也做到 DRY ( Don't Repeat Yourself )。 这本书算是护体神功,帮助你消减 Bugs 的攻击。

  • Cucumber: 行为驱动测试,2013

介绍了那么多,总于有一本中文翻译的了。。。。 我没有读过翻译版本,不知道如何。但是原著是很不错的。 与其把它看成是编程书籍,不如是思想书籍:如何通过测试来编写有效的代码?

中级

Ruby 不难入门,接下来是大量反复的练习和实践,基于这些实践来反思。 Rails 框架很强大,能简化开发时间;但另外一面,太过于依赖框架,很容易忽视软件开发,OOP 思想的原则。 懂得使用框架,不代表能写出优质,可拓展,拥抱变化的系统。 所以在这个阶段,楼主还会推荐一些软件设计和最实践的书籍。

  • Agile Web Development with Rails 4, 2013

经典书系列,随着 Rails 的版本发布不断的跟进修改。 亚马逊上的中文版本被批斗出翔了,又一本经典的烂翻译。 做编程的,英文是逃不掉的,好在 Rails 的中文社区也是很活跃,书籍慢慢的看,不单收获技术,英语能力也能提升。

  • Sinatra: up and running, 2011

Sinatra 是 Ruby 底下另一个很流行的 Web Framework。她比 Rails 更轻量,灵活可配置,上手快。 这本书很薄,才 100 多页,可是信息量很大。涵盖了 HTTP Request/Response, Session 这些 Web 开发中的基本概念, 还专门用一个章节来细致介绍了 Rack 和 Rack Middleware。最后是介绍如何用 Sinatra 来开发一个 Blog 系统。 短小精悍。如果再结合查看 Sinatra 的源码,会得到很大的提升。

  • Rails AntiPatterns: Best Practice Ruby on Rails Refactoring

如果要找 Rails 开发的最佳实践,那这本书一定要读。 书的结构很清晰,从 Model 层,到 Controller 到 Views, 然后是 DB, Testing 和 Deployment, 一一介绍开发中会碰到的 AntiPatterns,同时 给出详细的解决方案。 对于有过一定 Rails 开发经验的人,再来阅读这本书,能从别人的经验谈中优化自己的开发,学习更好的解决方案,收益会很大。

  • Practical Object-Oriented Design in Ruby: An Agile Primer, 2012, Sandi Metz

这本书也是有中文翻译的,据说质量翔。。。 Rails 框架的流行推动了 Ruby 的发展,太多的 Rails/Ruby Apps 被快速的开发出来,可却以牺牲 维护性和拓展性为代价。 系统紧耦合 ( Tightly Coupling), 破坏封装 ( Encapsulation Broken ), 违反 Law of Demeter,这些都会损害 系统的健康。归根结底是没有做到合理的 OOP 设计,而重度依赖了框架或者工具。 这本书让你重新认识 OOP 的编程思想,以及在 Ruby 下如何实现。 “As a self-taught programmer, this was an extremely helpful dive into some OOP concepts that I could definitely stand to become better acquainted with! And, I’m not alone: there’s a sign posted at work that reads, ‘WWSMD? – What Would Sandi Metz Do?’” —Jonathan Mukai, Pivotal in NYC

深入

楼主也是在深入学习 Ruby 的阶段。这个阶段更多是思考设计和架构。

  • Refactoring: Ruby Edition, 2009, Jay Fields, Shane Harvie, Martin Fowler, Kent Beck

楼主没有读过这本书,但是冲着 Martin Folwer 和 Kent Back 的大名来的。 在此摘抄官方的介绍: This book will help you 这本书会帮助你: • Understand the core principles of refactoring and the reasons for doing it 理解重构的核心原则以及为什么要这么做 • Recognize“bad smells”in your Ruby code 发现你 Ruby 代码中的 "bad smells" • Rework bad designs into well-designed code, one step at a time 一步一个脚印的修复恶劣设计 • Build tests to make sure your refactorings work properly 测试驱动重构 • Understand the challenges of refactoring and how they can be overcome 认识重构会面临的挑战以及如何克服 • Compose methods to package code properly 运用 package 的思想来重构 methods • Move features between objects to place responsibilities where they fit best 优化对象设计,封装职责 • Organize data to make it easier to work with 组织数据,让它更好的被调用 • Simplify conditional expressions and make more effective use of polymorphism 利用多态来简化选择逻辑 • Create interfaces that are easier to understand and use 设计简单易用的接口 • Generalize more effectively 更有效的简化 • Perform larger refactorings that transform entire software systems and may take months or years 大型系统的重构
• Successfully refactor Ruby on Rails code 成功的重构 ROR 代码

  • Design Patterns in Ruby, Russ Olsen, 2007

GoF's patterns 的 Ruby 诠释。

  • Metaprogramming Ruby 2: Program Like the Ruby Pros, 2014, Paolo Perrotta

学习元编程的不二选择,出到了第二版。 书中最后一章是介绍了 Rails 框架如何运用了元编程的思想,大大的满足好奇心。

  • Ruby Under a Microscope, 2013, Pat Shaughnessy

Ruby 到底是如何实现的,又如何运行你的代码,为什么说 Class 和 Module 是一样的,几乎所有东西 都是 Object? Ruby 如何做 GC?这本书就回答了这些问题。 作者深入到 C code,但是不需要你有很强的 C 知识,借用大量的图片和实践来描绘 Ruby 的内部工作。

免费就好

#2 楼 @ruby_sky 惭愧。那个分享更全面!

#1 楼 @naitnix 能有影印版我就满足了。免费真是奢求。

强烈推荐这本 http://book.douban.com/subject/24316596/ 。 从做 web 开发到现在,快两年了,只有两本书始终没离开过我的桌子,这本是其中的一本。 遇到问题,首先翻它,几乎没让我失望过。

#5 楼 @yfractal 我有两个书,一直放在我床头,从来没有离开过。睡觉不能没枕头啊。

#5 楼 @yfractal 好在哪里呢?似乎没有什么书是大力丸吧。

#6 楼 @ruby_sky 哈哈。。。其实这本书一直被我用来垫笔记本的!

#7 楼 @chenge 厚啊,垫笔记本刚好合适。

@chenge 呃,也不见得,比如 SICP。

1) 这本书最大的特点是成体系。讲了为什么。 敏捷开发相关的东西都讲了。rails、ruby 相关的书,一般只讲一部分。

2) 准备充足。 作者 Fox,有过创业。写这本书的之前读了 N 多相关的书。采访了美国 N 多的软件公司(第二作者 David 还比较得意的说,有些人还认识他...)。这门课程教了 2、3 年。每一年都会根据反馈做更改。

3) 透彻,只讲重点,不废话。 作者自身功力非常深厚。 比如讲测试那块。只讲了 stub,before,coverage 之类的关键点。

比如测试的 factory,除了讲了为啥 mock 不够用来,就给了一句话“factory—a framework designed to allow quick creation of full-featured objects... selectively overriding only certain attributes“ 语法糖就直接被忽略了。。。

比如讲 JavaScript 的 new 的时候讲了 2 点。

In the function body, this will be bound to a new object (hash) that will eventually be returned by the function—   even if the function doesn’t have an explicit return statement. This behavior is similar to Ruby’s self inside an   initialize constructor method.

The returned JavaScript object will have as its prototype whatever the function’s own prototype property is set to.”

4) example code 给的好。 书里面几乎每一个知识点,给出的 example code,都能覆盖平时使用的九成。 而且都是能抓住重点的那种。

5) 习题。Fallacy, PitFall,大量的参考资料。 各种小图标。比如有些地方是为了 Convention over Configuration,有些地方是为了 DRY,作者都用图标的方式表明了。

谢谢推荐

#5 楼 @yfractal 书已经读过。但是没有留下很多的印象,没有想要的深度。

#8 楼 @yfractal 我宿舍没来过小偷的原因之一就是我在门店写着:正在研究《代码大全》,进来一个,随手抽一本砸死他。

看到 LZ 是个女的,我马上进来了。。。。

楼主,我们是不是见过?London 的 Ruby Manor?可惜没跟你说上话。

#15 楼 @blacktulip 是的。:)后来我加你 twitter 啦。

经这么一介绍,对《Practical Object-Oriented Design in Ruby》这本书有兴趣; 而《Ruby Under a Microscope》这本在硬盘里躺了有一年了。 今年刚好适合看这两本书。

#12 楼 @ruby_sky 小偷还知道代码大全,不明觉厉

#14 楼 @317583395 看来内容还不够吸引呀

#17 楼 @hz_qiuyuanxin practical oop 12 年就买了,今年才看…

#17 楼 @hz_qiuyuanxin 我超级喜欢那本,建议你看看 amazon 上的评价,很高

#20 楼 @yue 楼主,我也写了个类似的东西,话说能帮我看看么?给点建议啥的

#21 楼 @cqcn1991 oop 那本确实很好。握手。

#22 楼 @cqcn1991 建议真说不上,我也是在学习:😄

#18 楼 @yue 小偷之前是做 PHP 开发的,后来转行做小偷了。😄

#25 楼 @ruby_sky 快点教他 ruby 大法

#24 楼 @yue 明天发你…现在好像出了点小问题…

我感觉就是这样: 基础(入门系列)->In Action(实践)->进阶提升(元编程之类)->API DOC(把书变成字典来查)

#32 楼 @imlcl 我感觉是这样的: 基础(入门系列)->In Action(实践)->进阶提升(元编程之类)->API DOC(把书变成字典来查)-> 查看框架源码寻找更丰富的 API

#28 楼 @hooopo Enterprise Integration with Ruby, 2006 这本书怎么样?

#5 楼 @yfractal 谢推荐。当年是学 online course 的时候,买过这个书,可惜没有好好读过。现在来好好研读。

#34 楼 @yue 没看过,那个 repo 里都是很老的电子书。Enterprise Rails 我觉得不错,讲了一些平时接触不多的思路,有在线版:http://dan.chak.org/enterprise-rails/

#31 楼 @cqcn1991 对于没有基础的人,大多从做一个 rails app 开始。有了认知,才开始看书。多做多看。Just do it. 笔记很详尽,好像更适合自己回顾思考~

#36 楼 @hooopo 待我看完交流可好 😄

#37 楼 @yue 额……计划里从 Rails Tutorial 一开始就在跟着做 web app 啊。。。。我好像写得太复杂了很难看,等我有时间改改~

看着头像就进来了,楼主好厉害看了这么多书

谢谢分享,直接 rails, 路过。

楼主看完几本了?

我目前在看 Programming Ruby 1.9 & 2.0,挺不错的。

另外我把看书的学习笔记发到我网页里,欢迎交流: http://www.huiimy.ninja/?p=196

看到头像是个妹子,进来点赞。

我想问下怎么发帖问问题……

#40 楼 @gothic 看完几本了?

mark,LZ 万福

#44 楼 @hzxu seems you are abc, austrialia born chinese :)

#43 楼 @mogodb 重构和 design pattern 还在学习中。

#48 楼 @hpviewer 这。。莫非是大年三十(初一)发的。元宵快乐~ 😄

#51 楼 @yue 一边工作一边学习么?工作时间看书,老板不会砍死你么?

楼主是个大美女,看这么多技术书,牛银。楼主在哪个公司上班?

day day up

需要 登录 后方可回复, 如果你还没有账号请 注册新账号