通过开源书籍学习 Ruby 编程
============================================================

![](https://i1.wp.com/www.ossblog.org/wp-content/uploads/2017/03/Ruby-Montage.png?w=565&ssl=1)

### 开源的 Ruby 书籍

Ruby 是由 Yukihiro “Matz” Matsumoto 开发的一门通用目的、脚本化、结构化、灵活且完全面向对象的编程语言。它具有一个完全动态类型系统，这意味着它的大多数类型检查是在运行的时候进行，而非编译的时候。因此程序员不必过分担心是整数类型还是字符串类型。Ruby 会自动进行内存管理，它具有许多和 Python、Perl、Lisp、Ada、Eiffel 和 Smalltalk 相同的特性。

Ruby on Rails 框架对于 Ruby 的流行起到了重要作用，它是一个全栈 Web 框架，目前已被用来创建许多受欢迎的应用，包括 Basecamp、GitHub、Shopify、Airbnb、Twitch、SoundCloud、Hulu、Zendesk、Square 和 Highise 。

Ruby 具有很高的可移植性性，在 Linux、Windows、Mac OS X、Cygwin、FreeBSD、NetBSD、OpenBSD、BSD/OS、Solaris、Tru64 UNIX、HP-UX 以及其他许多系统上均可运行。目前，Ruby 在 TIOBE 编程社区排名 12 。

这篇文章有 9 本很优秀的推荐书籍，有针对包括初学者、中级程序员和高级程序员的书籍。当然，所有的书籍都是在开源许可下发布的。

这篇文章是[ OSSBlog 的系列文章开源编程书籍][18]的一部分。


### 《[Ruby Best Practices][1]》

![Ruby Best Practices](https://i0.wp.com/www.ossblog.org/wp-content/uploads/2017/03/RubyBestPractices.jpg?resize=200%2C262&ssl=1) 

作者： Gregory Brown (328 页)

《Ruby Best Practices》适合那些希望像有经验的 Ruby 专家一样使用 Ruby 的程序员。本书是由 Ruby 项目 Prawn 的开发者所撰写的，它阐述了如何使用 Ruby 设计美丽的 API 和特定领域语言，以及如何利用函数式编程想法和技术，从而简化代码，提高效率。

《Ruby Best Practices》 更多的内容是关于如何使用 Ruby 来解决问题，它阐述的是你应该使用的最佳解决方案。这本书不是针对 Ruby 初学者的，所以对于编程新手也不会有太多帮助。这本书的假想读者应该对 Ruby 的相应技术有一定理解，并且拥有一些使用 Ruby 来开发软件的经验。

这本书分为两部分，前八章组成本书的核心部分，后三章附录作为补充材料。

这本书提供了大量的信息：

*   通过测试驱动代码 - 涉及了大量的测试哲学和技术。使用 mocks 和 stubs
*   通过利用 Ruby 神秘的力量来设计漂亮的 API：灵活的参数处理和代码块
*   利用动态工具包向开发者展示如何构建灵活的界面，实现单对象行为，扩展和修改已有代码，以及程序化地构建类和模块
*   文本处理和文件管理集中于正则表达式，文件、临时文件标准库以及文本处理策略实战
*   函数式编程技术优化了模块代码组织、存储、无穷目录以及更高顺序程序。
*   理解代码如何出错以及为什么会出错，阐述如何处理日志记录
*   通过利用 Ruby 的多语言能力削弱文化屏障
*   熟练的项目维护

本书为开源书籍，在 CC NC-SA 许可证下发布。

[在此下载《Ruby Best Practices》][1]。 

### 《[I Love Ruby][2]》

 ![I Love Ruby](https://i2.wp.com/www.ossblog.org/wp-content/uploads/2017/03/LoveRuby.png?resize=200%2C282&ssl=1)

作者： Karthikeyan A K (246 页)

《I Love Ruby》以比传统的介绍更高的深度阐述了基本概念和技术。该方法为编写有用、正确、易维护和高效的 Ruby 代码提供了一个坚实的基础。

章节内容涵盖：

*   变量
*   字符串
*   比较和逻辑
*   循环
*   数组
*   哈希和符号
*   Ranges
*   函数
*   变量作用域
*   类 & 对象
*   Rdoc
*   模块和 Mixins
*   日期和时间
*   文件
*   Proc、匿名 和 块
*   多线程
*   异常处理
*   正则表达式
*   Gems
*   元编程

在 GNU 自由文档许可证之下，你可以复制、发布和修改本书，1.3 或任何之后版本由自由软件基金会发布。

[点此下载《I Love Ruby》][2]。


### [Programming Ruby – The Pragmatic Programmer’s Guide][3]

![Programming Ruby - The Pragmatic Programmer's Guide](https://i1.wp.com/www.ossblog.org/wp-content/uploads/2017/03/ProgrammingRuby.jpeg?resize=200%2C248&ssl=1) 

作者： David Thomas, Andrew Hunt (HTML)

《Programming Ruby – The Pragmatic Programmer’s Guide》是一本 Ruby 编程语言的教程和参考书。使用 Ruby，你将能够写出更好的代码，更加有效率，并且使编程变成更加享受的体验。

内容涵盖以下部分：

*   类、对象和变量
*   容器、块和迭代器
*   标准类型
*   更多方法
*   表达式
*   异常、捕获和抛出
*   模块
*   基本输入和输出
*   线程和进程
*   何时抓取问题
*   Ruby 和它的世界、Web、Tk 和 微软 Windows
*   扩展 Ruby
*   映像、对象空间和分布式 Ruby
*   标准库
*   面向对象设计库
*   网络和 Web 库
*   嵌入式文件
*   交互式 Ruby shell

这本书的第一版在开放发布许可证 1.0 版或更新版的许可下发布。本书更新后的第二版涉及 Ruby 1.8 ，并且包括所有可用新库的描述，但是它不是在免费发行许可证下发布的。

[点此下载《Programming Ruby – The Pragmatic Programmer’s Guide》][3]。

### 《[Why’s (Poignant) Guide to Ruby][4]》

![Why’s (Poignant) Guide to Ruby](https://i1.wp.com/www.ossblog.org/wp-content/uploads/2017/03/WhysGuideRuby.jpg?resize=200%2C218&ssl=1) 

作者：why the lucky stiff (176 页)

《Why’s (poignant) Guide to Ruby》是一本 Ruby 编程语言的介绍书籍。该书包含一些冷幽默，偶尔也会出现一些和主题无关的内容。本书包含的笑话在 Ruby 社区和卡通角色中都很出名。

本书的内容包括：

*   关于本书
*   Kon’nichi wa, Ruby
*   一个快速（希望是无痛苦的）的 Ruby 浏览（伴随卡通角色）：Ruby 核心概念的基本介绍
*   代码浮动小叶：评估和值，哈希和列表
*   组成规则的核心部分：case/when、while/until、变量作用域、块、方法、类定义、类属性、对象、模块、IRB 中的内省、dup、self 和 rbconfig 模块
*   中心：元编程、正则表达式
*   当你打算靠近胡须时：在已存在类中发送一个新方法
*   天堂演奏

本书在 CC-SA 许可证许可下可用。

[点此下载《Why’s (poignant) Guide to Ruby》][4]。

### 《[Ruby Hacking Guide][5]》

![Ruby Hacking Guide](https://i1.wp.com/www.ossblog.org/wp-content/uploads/2017/03/RubyHackingGuide.png?resize=200%2C250&ssl=1) 

作者： Minero Aoki ，翻译自 Vincent Isambart 和 Clifford Escobar Caoille (HTML)

通过阅读本书可以达成下面的目标：

*   拥有关于 Ruby 结构的知识
*   掌握一般语言处理的知识
*   收获阅读源代码的技能

本书分为四个部分：

*   对象
*   动态分析
*   评估
*   外部评估

要想从本书中收获最多的东西，需要具备一定 C 语言的知识和基本的面向对象编程知识。本书在 CC-NC-SA 许可证许可下发布。

原书的官方支持网站为 [i.loveruby.net/ja/rhg/][10]

[点此下载《Ruby Hacking Guide》][5]

### 《[The Book Of Ruby][6]》

![The Book Of Ruby](https://i1.wp.com/www.ossblog.org/wp-content/uploads/2017/03/BookRuby.jpg?resize=200%2C270&ssl=1) 

作者： How Collingbourne (425 页)

《The Book Of Ruby》是一本免费的 Ruby 编程高级教程。

《The Book Of Ruby》以 PDF 文件格式提供，并且每一个章节的所有例子都伴有可运行的源代码。同时，也有一个介绍来阐述如何在 Steel 或其他任何你喜欢的编辑器/IDE 中运行这些 Ruby 代码。它主要集中于 Ruby 语言的 1.8.x 版本。

本书被分成很小的块。每一个章节介绍一个主题，并且分成几个不同的子话题。每一个编程主题由一个或多个小的自包含、可运行的 Ruby 程序构成。

*   字符串、数字、类和对象 - 获取输入和输出、字符串和外部评估、数字和条件测试：if ... then、局部变量和全局变量、类和对象、实例变量、消息、方法、多态性、构造器和检属性和类变量 - 超类和子类，超类传参，访问器方法，’set‘ 访问器，属性读写器、超类的方法调用，以及类变量
*   类等级、属性和类变量 - 超类和子类，超类传参，访问器方法，’set‘ 访问器，属性读写器、超类的方法调用，以及类变量
*   字符串和 Ranges - 用户自定义字符串定界符、引号等更多
*   数组和哈希 - 展示如何创建一系列对象
*   循环和迭代器 - for 循环、代码块、while 循环、while 修改器以及 until 循环
*   条件语句 - If..Then..Else、And..Or..Not、If..Elsif、unless、if 和 unless 修改器、以及 case 语句
*   方法 - 类方法、类变量、类方法是用来干什么的、Ruby 构造器、单例方法、单例类、重载方法以及更多
*   传递参数和返回值 - 实例方法、类方法、单例方法、返回值、返回多重值、默认参数和多重参数、赋值和常量传递以及更多
*   异常处理 - 涉及 rescue、ensure、else、错误数量、retry 和 raise
*   块、Procs 和 匿名 - 阐述为什么它们对 Ruby 来说很特殊
*   符号 - 符号和字符串、符号和变量以及为什么应该使用符号
*   模块和 Mixins
*   文件和 IO - 打开和关闭文件、文件和目录、复制文件、目录询问、一个关于递归的讨论以及按大小排序
*   YAML - 包括嵌套序列，保存 YAML 数据以及更多
*   Marshal - 提供一个保存和加载数据的可选择方式
*   正则表达式 - 进行匹配、匹配群组以及更多
*   线程 - 向你展示如何同时运行多个任务
*   调试和测试 - 涉及交互式 Ruby shell（IRB.exe）、debugging 和 单元测试
*   Ruby on Rails - 浏览一个创建博客的实践指南
*   动态编程 - 自修改程序、重运算魔法、特殊类型的运算、添加变量和方法以及更多

本书由 SapphireSteel Software 发布，SapphireSteel Software 是用于 Visual Studio 的 Ruby In Steel 集成开发环境的开发者。读者可以复制和发布本书的文本和代码（免费版）

[点此下载《The Book Of Ruby》][6]


### 《[The Little Book Of Ruby][7]》

 ![The Little Book of Ruby](https://i0.wp.com/www.ossblog.org/wp-content/uploads/2017/03/TheLittleBookRuby.png?resize=200%2C259&ssl=1) 

作者： Huw Collingbourne (87 页)

《The Little Book of Ruby》是一本一步接一步的 Ruby 编程教程。它指导读者浏览 Ruby 的基础。另外，它分享了《The Book of Ruby》一书的内容，但是它旨在作为一个简化的教程来阐述 Ruby 的主要特性。

章节内容涵盖：

*   字符串和方法 - 包括外部评估。详细描述了 Ruby 方法的语法
*   类和对象 - 阐述如何创建一个新类型的对象
*   类等级 - 一个特殊类型的类，其为一些其他类的简化并且继承了其他一些类的特性
*   访问器、属性、类变量 - 访问器方法，属性读写器，属性创建变量，调用超类方法以及类变量探索
*   数组 - 学习如何创建一系列对象：数组包括多维数组
*   哈希 - 涉及创建哈希表，为哈希表建立索引以及哈希操作等
*   循环和迭代器 - for 循环、块、while 循环、while 修饰器以及 until 循环
*   条件语句 - If..Then..Else、And..Or..Not、If..Elsif、unless、if 和 unless 修饰器以及 case 语句
*   模块和 Mixins - 包括模块方法、模块作为名字空间模块实例方法、模块或 'mixins'、来自文件的模块和预定义模块
*   保存文件以及更多内容

本书可免费复制和发布，只需保留原始文本且注明版权信息。

[点此下载《The Little Book of Ruby》][7]

### 《[Kestrels, Quirky Birds, and Hopeless Egocentricity][8]》

 ![Kestrels, Quirky Birds, and Hopeless Egocentricity](https://i2.wp.com/www.ossblog.org/wp-content/uploads/2017/03/KestrelsQuirkyBirds.jpeg?resize=200%2C259&ssl=1) 

作者： Reg “raganwald” Braithwaite (123 页)

《Kestrels, Quirky Birds, and Hopeless Egocentricity》是通过收集 “Raganwald” Braithwaite 的关于组合逻辑、Method Combinators 以及 Ruby 元编程的系列文章而形成的一本方便的电子书。

本书提供了通过使用 Ruby 编程语言来应用组合逻辑的一个基本介绍。组合逻辑是一种数学表示方法，它足够强大，从而用于解决集合论问题以及计算中的问题。

在这本书中，读者会会探讨到一些标准的 Combinators，并且对于每一个 Combinators，书中都用 Ruby 编程语言写程序探讨了它的一些结果。在组合逻辑上，Combinators 之间组合并相互改变，书中的 Ruby 例子注重组合和修改 Ruby 代码。通过像 K Combinator 和 .tap 方法这样的简单例子，本书阐述了元编程的理念和递归 Combinators 。

本书在 MIT 许可证许可下发布。

[点此下载《Kestrels, Quirky Birds, and Hopeless Egocentricity》][8]

### 《[Ruby Programming][9]》

 ![Ruby Programming](https://i1.wp.com/www.ossblog.org/wp-content/uploads/2017/03/RubyProgrammingWikibooks.png?resize=200%2C285&ssl=1) 

作者： Wikibooks.org (261 页)

Ruby 是一种解释性、面向对象的编程语言。

本书被分为几个部分，从而方便按顺序阅读。

*   开始 - 向读者展示如何在其中一个操作系统环境中安装并开始使用 Ruby 
*   Ruby 基础 - 阐述 Ruby 语法的主要特性。它涵盖了字符串、编码、写方法、类和对象以及异常等内容
*   Ruby 语义参考
*   内建类
*   可用模块，涵盖一些标准库
*   中级 Ruby 涉及一些稍微高级的话题

本书在 CC-SA 3.0 本地化许可证许可下发布。

[点此下载《Ruby Programming》][9]

* * *

无特定顺序，我将在结束前推荐一些没有在开源许可证下发布但可以免费下载的 Ruby 编程书籍。

*   [Mr. Neighborly 的 Humble Little Ruby Book][11] – 一个易读易学的 Ruby 完全指南。
*   [Introduction to Programming with Ruby][12] – 学习编程的基础知识，一切从零开始。
*   [Object Oriented Programming with Ruby][13] – 学习编程的基础知识，一切从零开始。
*   [Core Ruby Tools][14] – 对 Ruby 的四个核心工具 Gems、Ruby Version Managers、Bundler 和 Rake 进行了简短的概述。
*   [Learn Ruby the Hard Way, 3rd Edition][15] – 一本适合初学者的入门书籍。
*   [Learn to Program][16] – 来自 Chris Pine。
*   [Ruby Essentials][17] – 一个准确且简单易学的 Ruby 学习指南。

--------------------------------------------------------------------------------

via: https://www.ossblog.org/study-ruby-programming-with-open-source-books/

作者：[Steve Emms][a]
译者：[ucasFL](https://github.com/ucasFL)
校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

[a]:https://www.ossblog.org/author/steve/
[1]:https://github.com/practicingruby/rbp-book/tree/gh-pages/pdfs
[2]:https://mindaslab.github.io/I-Love-Ruby/
[3]:http://ruby-doc.com/docs/ProgrammingRuby/
[4]:http://poignant.guide/
[5]:http://ruby-hacking-guide.github.io/
[6]:http://www.sapphiresteel.com/ruby-programming/The-Book-Of-Ruby.html
[7]:http://www.sapphiresteel.com/ruby-programming/The-Book-Of-Ruby.html
[8]:https://leanpub.com/combinators
[9]:https://en.wikibooks.org/wiki/Ruby_Programming
[10]:http://i.loveruby.net/ja/rhg/
[11]:http://www.humblelittlerubybook.com/
[12]:https://launchschool.com/books/ruby
[13]:https://launchschool.com/books/oo_ruby
[14]:https://launchschool.com/books/core_ruby_tools
[15]:https://learnrubythehardway.org/book/
[16]:https://pine.fm/LearnToProgram
[17]:http://www.techotopia.com/index.php/Ruby_Essentials
[18]:https://www.ossblog.org/opensourcebooks/
