作为极其流行的Ruby on Rails Web开发框架的底层引擎,Ruby已经广为人知,而它本身是一种极其强大的全能型编程语言。Ruby关注的焦点是减轻开发的负担,以及提供完全的面向对象环境。
本书是一本彻底而全面的最新指南,适合于各类Ruby读者,不管是编程初学者、Web开发人员,还是Ruby新手。本书从解说面向对象编程背后的原理开始,只通过几章的讲解,就构造出了真正的Ruby应用程序。
本书还讲解了Ruby关键内容(如类、对象、项目、模板和程序库)以及Ruby的其他方面(如数据库访问)。另外,本书深入介绍了Ruby on Rails。本书附录也提供了重要的参考信息,为经验丰富的程序员提供了Ruby快速入门。
Peter Cooper 是经验丰富的Ruby开发者和培训师,还是最流行的Ruby新闻博客“Ruby内幕”(http://www.rubyinside.com/)的编辑。在2007年以前,他主要做Ruby培训和开发,现在是Feed Digest网站(http://www.feeddigest.com/)的全职开发者和所有者。
仲田 南京某软件公司项目经理,高级程序员、系统分析员,有多年软件开发与管理经验,从事过Delphi、J2EE、Rails应用开发,应用领域主要是企业管理应用,包括财务、审计、法律、商务、办公自动化等,目前正在研究Ruby语言和Rails框架。
封面图
目录
- 译者序
- 序言
- 前言
- 致谢
- 第一篇 基础与脚手架
- 第1章 让它跑起来:安装Ruby1
- 1.1 安装Ruby2
- 1.1.1 Windows平台2
- 1.1.2 Apple Mac OS X平台4
- 1.1.3 Linux平台5
- 1.1.4 其他平台7
- 1.2 小结8
- 第2章 编程等于快乐:Ruby和面向对象
- 概览9
- 2.1 初始步骤9
- 2.1.1 irb:交互式Ruby9
- 2.1.2 Ruby是计算机的通用语10
- 2.1.3 为什么Ruby是如此杰出的编程语言10
- 2.1.4 心灵小径11
- 2.2 把思路转变成Ruby代码13
- 2.2.1 Ruby怎么理解对象和类的概念13
- 2.2.2 造人过程13
- 2.2.3 基础变量15
- 2.2.4 从人到宠物15
- 2.3 一切都是对象18
- 2.3.1 Kernel模块的方法19
- 2.3.2 向方法传递数据19
- 2.3.3 使用String类的方法20
- 2.4 以非面向对象方式使用Ruby21
- 2.5 小结22
- 第3章 Ruby的构造元素:数据、表达式
- 和流程控制24
- 3.1 数字与表达式24
- 3.1.1 表达式基础知识24
- 3.1.2 变量24
- 3.1.3 比较运算符与表达式25
- 3.1.4 用块和迭代子在数字中循环27
- 3.1.5 浮点数28
- 3.1.6 常量29
- 3.2 文本与字符串30
- 3.2.1 字面字符串30
- 3.2.2 字符串表达式31
- 3.2.3 插写32
- 3.2.4 字符串方法33
- 3.2.5 正则表达式与字符串操作34
- 3.3 数组与列表38
- 3.3.1 基本数组38
- 3.3.2 字符串切分成数组40
- 3.3.3 数组迭代40
- 3.3.4 数组的其他方法41
- 3.4 散列表43
- 3.4.1 散列表的基础方法43
- 3.4.2 散列表中的散列表44
- 3.5 流程控制45
- 3.5.1 if与unless45
- 3.5.2 :,三元运算符46
- 3.5.3 elsif与case47
- 3.5.4 while与until48
- 3.5.5 代码块49
- 3.6 其他有用的构造元素51
- 3.6.1 日期与时间51
- 3.6.2 大数字53
- 3.6.3 范围54
- 3.6.4 符号55
- 3.6.5 类间转换56
- 3.7 小结57
- 第4章 开发基础的Ruby应用程序59
- 4.1 处理源代码文件59
- 4.1.1 创建测试文件59
- 4.1.2 测试用源代码文件60
- 4.1.3 运行源代码61
- 4.2 我们的目标程序:文本分析器63
- 4.2.1 基本功能需求63
- 4.2.2 构建程序基本框架64
- 4.2.3 获取哑文本64
- 4.2.4 载入文本文件并统计行数65
- 4.2.5 统计字符数66
- 4.2.6 统计字数66
- 4.2.7 统计句子和段落数68
- 4.2.8 计算平均值69
- 4.2.9 到目前为止的源代码69
- 4.3 增加额外功能70
- 4.3.1 “有用”字词的百分比70
- 4.3.2 找出“有趣的”句子进行汇总72
- 4.3.3 分析text.txt之外的其他文件73
- 4.4 完整的程序74
- 4.5 小结76
- 第5章 Ruby生态系统77
- 5.1 Ruby的历史77
- 5.1.1 Ruby的起源77
- 5.1.2 Ruby的影响78
- 5.1.3 向西方流传78
- 5.2 Ruby on Rails80
- 5.2.1 Rails面世的由来80
- 5.2.2 Web (2.0) 是怎样赢的81
- 5.3 开源文化82
- 5.4 如何获得帮助83
- 5.4.1 邮件列表83
- 5.4.2 Usenet新闻组83
- 5.4.3 因特网中继聊天工具83
- 5.4.4 文档84
- 5.4.5 论坛85
- 5.5 加入社区85
- 5.5.1 向别人提供帮助85
- 5.5.2 贡献代码86
- 5.5.3 网络博客86
- 5.6 小结87
- 第二篇 Ruby的核心
- 第6章 类、对象和模块89
- 6.1 为什么要用面向对象89
- 6.2 面向对象基础知识92
- 6.2.1 局部变量、全局变量、对象变量和
- 类变量92
- 6.2.2 类方法和对象方法95
- 6.2.3 继承97
- 6.2.4 覆写现有方法99
- 6.2.5 对象方法的反射与发现101
- 6.2.6 封装102
- 6.2.7 多态106
- 6.2.8 嵌套类107
- 6.2.9 常量的作用域108
- 6.3 模块、命名空间和掺入109
- 6.3.1 命名空间109
- 6.3.2 掺入111
- 6.4 用对象构建“地下城”文本冒险游戏117
- 6.4.1 地下城的概念117
- 6.4.2 创建初始类118
- 6.4.3 Structs:快捷简单的数据类119
- 6.4.4 创建房间121
- 6.4.5 让地下城运转起来122
- 6.5 小结125
- 第7章 项目与程序库127
- 7.1 项目和使用其他文件的代码127
- 7.1.1 基本的文件包含127
- 7.1.2 从其他目录包含129
- 7.1.3 有条件地包含代码129
- 7.1.4 嵌套包含130
- 7.2 程序库130
- 7.2.1 标准程序库131
- 7.2.2 RubyGems包133
- 7.3 小结139
- 第8章 文档编写、错误处理、调试和
- 测试140
- 8.1 文档编写140
- 8.1.1 用RDoc生成文档140
- 8.1.2 RDoc技术142
- 8.2 调试与出错144
- 8.2.1 异常和出错处理145
- 8.2.2 Catch与Throw方法147
- 8.2.3 Ruby调试器148
- 8.3 测试151
- 8.3.1 测试驱动开发的哲学151
- 8.3.2 单元测试153
- 8.3.3 更多的Test::Unit断言154
- 8.4 性能基准度量和优化分析155
- 8.4.1 性能基准简单度量156
- 8.4.2 性能优化分析157
- 8.5 小结159
- 第9章 文件和数据库161
- 9.1 输入与输出161
- 9.1.1 键盘输入161
- 9.1.2 文件输入输出162
- 9.2 数据库基础173
- 9.2.1 文本文件数据库174
- 9.2.2 对象和数据结构的存储176
- 9.3 关系型数据库与SQL179
- 9.3.1 关系型数据库概念179
- 9.3.2 四大数据库:MySQL、PostgreSQL、Oracle和SQLite180
- 9.3.3 安装SQLite180
- 9.3.4 关于数据库基本操作和SQL的紧急
- 教程181
- 9.3.5 在Ruby中使用SQLite184
- 9.3.6 连接其他数据库系统188
- 9.3.7 ActiveRecord简介192
- 9.4 小结192
- 第10章 部署Ruby应用和程序库194
- 10.1 简单Ruby程序发布194
- 10.1.1 shebang行195
- 10.1.2 关联Windows的文件类型196
- 10.1.3 “编译”Ruby程序196
- 10.2 检测Ruby运行环境197
- 10.2.1 用RUBY_PLATFORM作简单的
- 操作系统检测198
- 10.2.2 环境变量198
- 10.2.3 读取命令行参数200
- 10.3 以gem包形式发布Ruby程序库200
- 10.3.1 创建gem包201
- 10.3.2 发布gem包204
- 10.3.3 RubyForge网站204
- 10.4 以远程服务形式部署Ruby应用205
- 10.4.1 CGI脚本205
- 10.4.2 常见HTTP服务器207
- 10.4.3 远程方法调用210
- 10.5 小结214
- 第11章 Ruby高级功能216
- 11.1 动态代码执行216
- 11.1.1 绑定216
- 11.1.2 eval的其他形式217
- 11.1.3 创建attr_accessor219
- 11.2 从Ruby中运行其他程序220
- 11.2.1 获得其他程序的运行结果220
- 11.2.2 向其他程序移交执行权221
- 11.2.3 同时运行两个程序221
- 11.2.4 与另一程序交互222
- 11.3 安全地掌控数据和危险方法222
- 11.3.1 被感染的数据和对象223
- 11.3.2 安全级别224
- 11.4 使用微软Windows225
- 11.4.1 使用Windows API225
- 11.4.2 控制Windows程序227
- 11.5 线程228
- 11.5.1 基础Ruby线程实战228
- 11.5.2 高级线程操作229
- 11.6 其他语言嵌入Ruby230
- 11.6.1 为什么用C作为嵌入语言231
- 11.6.2 创建基础方法或函数231
- 11.6.3 性能基准度量:C和Ruby233
- 11.7 对Unicode和UTF-8的支持234
- 11.8 小结236
- 第12章 综合演练:开发更大型的Ruby
- 应用238
- 12.1 构建机器人小程序238
- 12.1.1 什么是机器人小程序238
- 12.1.2 为什么要构建机器人小程序239
- 12.1.3 怎样构建239
- 12.2 创建文本处理工具程序库239
- 12.2.1 构建WordPlay程序库240
- 12.2.2 测试该程序库245
- 12.2.3 WordPlay程序库的源代码247
- 12.3 构建机器人小程序的核心功能249
- 12.3.1 程序的生命周期和组成部分250
- 12.3.2 机器人小程序的数据250
- 12.3.3 构建Bot类和数据载入器254
- 12.3.4 response_to方法255
- 12.3.5 试用机器人小程序259
- 12.4 机器人小程序主要代码清单262
- 12.4.1 bot.rb文件263
- 12.4.2 basic_client.rb文件265
- 12.5 扩展机器人小程序的功能266
- 12.5.1 用文本文件作为会话来源266
- 12.5.2 把机器人小程序连接到万维网266
- 12.5.3 机器人小程序之间的会话269
- 12.6 小结270
- 第三篇 Ruby在线
- 第13章 Ruby on Rails: Ruby的杀手级
- 应用271
- 13.1 第一步271
- 13.1.1 Rails是什么,为什么要用它271
- 13.1.2 安装Rails272
- 13.1.3 数据库方面的考虑273
- 13.2 构建Rails简单应用273
- 13.2.1 创建Rails空白应用273
- 13.2.2 数据库初始化277
- 13.2.3 创建模型和迁移文件279
- 13.2.4 搭建脚手架282
- 13.2.5 控制器与视图285
- 13.2.6 路由292
- 13.2.7 模型间关系293
- 13.2.8 会话与过滤器295
- 13.3 其他功能特性296
- 13.3.1 界面布局296
- 13.3.2 测试298
- 13.3.3 插件299
- 13.4 参考资料与演示应用300
- 13.4.1 参考站点和教程300
- 13.4.2 Rails示例应用300
- 13.5 小结301
- 第14章 Ruby与因特网302
- 14.1 HTTP与万维网302
- 14.1.1 下载网页302
- 14.1.2 生成网页和HTML309
- 14.1.3 解析网页内容313
- 14.2 电子邮件317
- 14.2.1 用POP3协议接收邮件317
- 14.2.2 用SMTP协议发送邮件319
- 14.2.3 用ActionMailer发送邮件320
- 14.3 用FTP协议传输文件321
- 14.3.1 FTP连接与基本操作321
- 14.3.2 下载文件323
- 14.3.3 上传文件324
- 14.4 小结325
- 第15章 网络连接、套接字与后台进程326
- 15.1 网络连接的概念326
- 15.1.1 TCP和UDP协议326
- 15.1.2 IP地址和DNS327
- 15.2 网络操作基础327
- 15.2.1 检查机器和服务是否可用327
- 15.2.2 进行DNS查询328
- 15.2.3 直接连接到TCP服务器330
- 15.3 服务器和客户端332
- 15.3.1 UDP客户端和服务器332
- 15.3.2 构建简单的TCP服务器333
- 15.3.3 多客户端TCP服务器335
- 15.3.4 GServer程序库336
- 15.3.5 基于GServer的聊天服务器339
- 15.3.6 Web/HTTP服务器341
- 15.3.7 后台进程341
- 15.4 小结343
- 第16章 有用的Ruby程序库和gem包344
- 16.1 abbrev程序库344
- 16.1.1 安装344
- 16.1.2 示例344
- 16.1.3 更多信息345
- 16.2 base64程序库345
- 16.2.1 安装346
- 16.2.2 示例346
- 16.2.3 更多信息347
- 16.3 BlueCloth程序库348
- 16.3.1 安装348
- 16.3.2 示例348
- 16.3.3 更多信息349
- 16.4 cgi程序库349
- 16.4.1 安装350
- 16.4.2 示例350
- 16.4.3 更多信息353
- 16.5 chronic程序库354
- 16.5.1 安装354
- 16.5.2 示例354
- 16.5.3 更多信息355
- 16.6 Digest程序库355
- 16.6.1 安装355
- 16.6.2 示例356
- 16.6.3 更多信息357
- 16.7 English程序库357
- 16.7.1 安装357
- 16.7.2 示例358
- 16.7.3 更多信息359
- 16.8 ERB程序库359
- 16.8.1 安装359
- 16.8.2 示例359
- 16.8.3 更多信息361
- 16.9 FasterCSV程序库361
- 16.9.1 安装361
- 16.9.2 示例362
- 16.9.3 更多信息365
- 16.10 iconv程序库366
- 16.10.1 安装366
- 16.10.2 示例366
- 16.10.3 更多信息367
- 16.11 logger程序库367
- 16.11.1 安装367
- 16.11.2 示例367
- 16.11.3 更多信息369
- 16.12 pp程序库369
- 16.12.1 安装369
- 16.12.2 示例369
- 16.12.3 更多信息370
- 16.13 RedCloth程序库371
- 16.13.1 安装371
- 16.13.2 示例371
- 16.13.3 更多信息372
- 16.14 StringScanner程序库372
- 16.14.1 安装372
- 16.14.2 示例373
- 16.14.3 更多信息375
- 16.15 tempfile程序库375
- 16.15.1 安装375
- 16.15.2 示例375
- 16.15.3 更多信息377
- 16.16 uri程序库377
- 16.16.1 安装377
- 16.16.2 示例377
- 16.16.3 更多信息380
- 16.17 zlib程序库380
- 16.17.1 安装380
- 16.17.2 示例380
- 16.17.3 更多信息381
- 附录
- 附录A Ruby入门与回顾(开发人员
- 专用版)
- 附录B Ruby参考速查
- 附录C有用的资源