比起 C, C++, Java 等语言,Ruby 相关书籍真是少得可怜。 本文罗列那些年楼主自学 Ruby 看过的书,按照入门到中级到深入的顺序,希望对于想学习 Ruby 的人有帮助。
补充: 这个帖子总结得更好: https://ruby-china.org/topics/768
入门书籍不在于多,就是有那么一本全面的介绍语言的基本语法,核心库,再多带那么些高级特性就够了。 这本是第二版,发行于 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 优雅的语法,而这本书也恰到好处的把她勾勒了出来。
如果你是 Java 或者 C# 的开发员转到 Ruby, 难免会把编写前两种语言的习惯带到 Ruby 来。这也就使得你的代码看起来不那么 Ruby。 这本书就是针对专治以上症结的。不单是从写法上,还从思考角度上,让你更好的利用 Ruby 的特性,从 Ruby 的角度编写程序。 它不单止于介绍 Ruby 的语言特性,如 symbol, module, 还指出了使用它们的最佳实践。 同时它还是一本字典,其中解释了 DSL, Framework, Gem, Ruby Implementation 这些概念,为你通往下一个学习阶段做好准备。 如果第一本书是教你扎马步,那么这本书就是让你修炼轻功了。
Ruby 社区是很重视 测试的,无论是 TDD 还是 BDD。 RSpec 是 Ruby TDD 的一个测试框架,以其语言化的语法在社区里流行。 书从介绍 RSpec 的基本语法,特性开始,用实例来描述如何从 TDD 的角度做开发,如何做 Mock 和 Stub,如何让测试也做到 DRY ( Don't Repeat Yourself )。 这本书算是护体神功,帮助你消减 Bugs 的攻击。
介绍了那么多,总于有一本中文翻译的了。。。。 我没有读过翻译版本,不知道如何。但是原著是很不错的。 与其把它看成是编程书籍,不如是思想书籍:如何通过测试来编写有效的代码?
Ruby 不难入门,接下来是大量反复的练习和实践,基于这些实践来反思。 Rails 框架很强大,能简化开发时间;但另外一面,太过于依赖框架,很容易忽视软件开发,OOP 思想的原则。 懂得使用框架,不代表能写出优质,可拓展,拥抱变化的系统。 所以在这个阶段,楼主还会推荐一些软件设计和最实践的书籍。
经典书系列,随着 Rails 的版本发布不断的跟进修改。 亚马逊上的中文版本被批斗出翔了,又一本经典的烂翻译。 做编程的,英文是逃不掉的,好在 Rails 的中文社区也是很活跃,书籍慢慢的看,不单收获技术,英语能力也能提升。
Sinatra 是 Ruby 底下另一个很流行的 Web Framework。她比 Rails 更轻量,灵活可配置,上手快。 这本书很薄,才 100 多页,可是信息量很大。涵盖了 HTTP Request/Response, Session 这些 Web 开发中的基本概念, 还专门用一个章节来细致介绍了 Rack 和 Rack Middleware。最后是介绍如何用 Sinatra 来开发一个 Blog 系统。 短小精悍。如果再结合查看 Sinatra 的源码,会得到很大的提升。
如果要找 Rails 开发的最佳实践,那这本书一定要读。 书的结构很清晰,从 Model 层,到 Controller 到 Views, 然后是 DB, Testing 和 Deployment, 一一介绍开发中会碰到的 AntiPatterns,同时 给出详细的解决方案。 对于有过一定 Rails 开发经验的人,再来阅读这本书,能从别人的经验谈中优化自己的开发,学习更好的解决方案,收益会很大。
这本书也是有中文翻译的,据说质量翔。。。 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 的阶段。这个阶段更多是思考设计和架构。
楼主没有读过这本书,但是冲着 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 代码
GoF's patterns 的 Ruby 诠释。
学习元编程的不二选择,出到了第二版。 书中最后一章是介绍了 Rails 框架如何运用了元编程的思想,大大的满足好奇心。
Ruby 到底是如何实现的,又如何运行你的代码,为什么说 Class 和 Module 是一样的,几乎所有东西 都是 Object? Ruby 如何做 GC?这本书就回答了这些问题。 作者深入到 C code,但是不需要你有很强的 C 知识,借用大量的图片和实践来描绘 Ruby 的内部工作。