第一篇 Ruby语言 1
第1章 Ruby介绍 1
1.1 Ruby是什么 1
1.1.1 Ruby概述 1
1.1.2 初识Ruby 1
1.2 为什么选择Ruby 2
1.2.1 Ruby特性 2
1.2.2 应用领域 3
1.2.3 与其他语言的比较 3
1.3 与Ruby相关的资源 4
1.3.1 Ruby社区和网站资源 4
1.3.2 JRuby、XRuby和IronRuby介绍 5
1.3.3 Hackety Hack介绍 6
1.4 如何学习Ruby语言 8
1.5 小结 8
第2章 搭建Ruby开发环境 9
2.1 安装Ruby 9
2.2 编辑工具IDE介绍 10
2.2.1 SciTE介绍 10
2.2.2 FreeRIDE介绍 10
2.2.3 Aptana RadRails介绍 10
2.2.4 使用EditPlus/UltraEditor编辑Ruby代码 11
2.2.5 NetBeans介绍 13
2.3 相关工具介绍 14
2.3.1 irb(交互式Ruby Shell) 14
2.3.2 rdoc、ri、fxri(Ruby文档工具) 15
2.3.3 gem(Ruby包管理) 17
2.3.4 RubyScript2Exe、Exerb(Ruby代码编译成EXE) 18
2.4 小结 19
第3章 Ruby语法入门 20
3.1 概述 20
3.2 面向对象OO介绍 20
3.3 关键字、标识符和注释 21
3.4 数据和运算 22
3.4.1 常量和变量 23
3.4.2 基本类型 23
3.4.3 运算符及其优先级 23
3.5 流程控制 24
3.5.1 条件语句(if,unless,case) 24
3.5.2 循环控制(while,until,for,each) 26
3.6 Ruby中的OOP简介 27
3.6.1 定义类和构造函数 27
3.6.2 定义类方法和属性 28
3.6.3 访问控制 30
3.6.4 类变量和实例变量 31
3.6.5 类的扩展和继承 32
3.6.6 别名 34
3.6.7 复制、冻结对象 35
3.6.8 对象序列化 37
3.7 模块和Mixin 37
3.7.1 模块介绍 37
3.7.2 加载和混入模块(require,load,include,extend) 39
3.8 内置类和Ruby标准库 40
3.9 动态特性 41
3.9.1 会变魔法的动态特性 41
3.9.2 动态执行代码 41
3.9.3 动态获得模块或类中的方法、常量和变量值 42
3.9.4 动态定义方法 43
3.9.5 const_missing、method_missing介绍 43
3.9.6 动态删除定义 46
3.10 代码块和迭代 47
3.10.1 代码块 47
3.10.2 yield和迭代 48
3.10.3 Proc和lambda介绍 49
3.11 异常处理 50
3.11.1 异常处理结构 50
3.11.2 抛出异常 51
3.11.3 恢复执行 51
3.12 小结 52
第4章 Ruby基本类型 53
4.1 数字 53
4.1.1 整数(Fixnum,Bignum) 53
4.1.2 浮点数Float 54
4.1.3 Math模块 54
4.2 字符串String 55
4.2.1 字符串表示 55
4.2.2 转义符、嵌入字符串 55
4.2.3 基本操作 56
4.2.4 常用方法 57
4.2.5 字符串加密 57
4.3 符号Symbol 58
4.4 可枚举模块Enumerable 59
4.4.1 概述 59
4.4.2 遍历、搜索方法 60
4.4.3 比较、排序方法 61
4.5 区间Range 62
4.5.1 概述 62
4.5.2 常用方法 62
4.5.3 自定义区间 62
4.6 数组Array 64
4.6.1 概述 64
4.6.2 定义数组、并行赋值 64
4.6.3 运算和常用方法 65
4.6.4 查找、修改、排序以及迭代 66
4.7 散列Hash 69
4.7.1 概述 69
4.7.2 定义散列 69
4.7.3 散列常用方法 69
4.7.4 查找和迭代 70
4.8 正则表达式Regexp 71
4.8.1 正则表达式简介 71
4.8.2 定义正则表达式 72
4.8.3 查找、替换 73
4.8.4 常见示例 74
4.9 时间Time 75
4.10 小结 76
第二篇 Ruby常用库介绍及高级应用第5章 Ruby的编码处理 77
5.1 乱码的缘由 77
5.2 jcode库和$KCODE 78
5.3 编码的相互转换 79
5.4 小结 80
第6章 I/O操作和文件处理 81
6.1 简单的输入/输出 81
6.2 文件和目录操作 82
6.2.1 File和Dir类 82
6.2.2 读写文件示例 84
6.2.3 目录操作示例 86
6.3 操作XML 87
6.3.1 生成XML 88
6.3.2 解析XML 88
6.3.3 访问RSS聚合 89
6.4 YMAL库 90
6.5 操作PDF 91
6.5.1 Ruby FPDF介绍 91
6.5.2 示例:使用Ruby FPDF创建PDF文件 92
6.6 读写ZIP文件 93
6.7 图像文件处理 95
6.7.1 RMagick介绍 95
6.7.2 获取图像文件信息 96
6.7.3 生成缩略图 96
6.7.4 在图片上添加文字 97
6.7.5 特效和变换 99
6.8 小结 100
第7章 访问数据库 101
7.1 与MySQL数据库直接对话 101
7.1.1 Ruby/MySQL简介 101
7.1.2 连接MySQL数据库 101
7.1.3 更多数据库操作 102
7.1.4 Ruby/MySQL API参考 103
7.2 直接连接Oracle数据库 104
7.2.1 安装Ruby/OCI8 104
7.2.2 Oracle数据库使用示例 104
7.2.3 Ruby/OCI8 API参考 104
7.3 通用数据库接口库DBI 105
7.3.1 DBI概述 105
7.3.2 安装DBI 106
7.3.3 使用DBI访问MySQL数据库 106
7.3.4 使用DBI访问Oracle数据库 107
7.3.5 事务处理 108
7.3.6 DBI API介绍 108
7.4 小结 109
第8章 网络编程 110
8.1 NET库介绍 110
8.2 抓取网页 110
8.3 使用POP3收取邮件 113
8.4 使用SMTP发送邮件 114
8.5 访问FTP 115
8.6 小结 117
第9章 系统相关技术和创建图形界面 118
9.1 运行外部程序 118
9.2 编写命令行程序和使用ARGV变量 119
9.3 Win32 API和Win32 OLE 120
9.3.1 Win32API简介 120
9.3.2 Win32OLE简介 121
9.3.3 使用Win32OLE操作Word和Excel 121
9.3.4 使用Win32OLE控制IE浏览器 123
9.4 使用Ruby构建图形界面 124
9.5 Ruby/Tk应用介绍 125
9.5.1 下载并安装Tcl/Tk 125
9.5.2 编写Hello World 125
9.5.3 Tk部件 126
9.5.4 事件处理 129
9.5.5 Canvas画布 130
9.6 WxRuby应用介绍 131
9.6.1 下载并安装WxRuby 131
9.6.2 第一个WxRuby程序 133
9.6.3 基本控件介绍 134
9.6.4 事件处理 136
9.7 Shoes应用介绍 138
9.7.1 下载并安装Shoes 138
9.7.2 第一个Shoes程序 140
9.7.3 Stacks和Flows介绍 140
9.7.4 基本控件 142
9.7.5 绘图和动画 143
9.8 小结 145
第10章 单元测试 146
10.1 单元测试概述 146
10.2 Ruby测试框架 146
10.2.1 简介 146
10.2.2 测试流程 147
10.2.3 断言Assert 149
10.3 测试示例:计算两点距离 149
10.4 小结 152
第三篇 网站开发框架Ruby on Rails第11章 Rails概述 153
11.1 什么是Rails 153
11.2 MVC简介 153
11.3 Rails的特点 154
11.4 Rails核心模块 155
11.5 Rails相关资源 156
11.6 如何学习Rails 158
11.6.1 注意Rails的特殊URL表达方法 158
11.6.2 了解Rails命名约定惯例 158
11.6.3 勤于检索Rails的文档 158
11.6.4 站在Ruby的角度学习和了解Rails 159
11.7 小结 159
第12章 应用Rails 160
12.1 安装Rails 160
12.2 配置数据库 161
12.2.1 安装并配置MySQL数据库 161
12.2.2 MySQL基本操作 162
12.3 创建Rails应用程序 164
12.4 配置Rails数据库连接 166
12.5 运行Rails应用程序 167
12.6 生成MyTest控制器 168
12.7 显示多种语言的“你好” 170
12.7.1 在数据库中创建一个表 170
12.7.2 试试scaffold 171
12.7.3 显示各种语言 174
12.8 Instant Rails介绍 175
12.8.1 安装Instant Rails 175
12.8.2 Instant Rails界面介绍 175
12.8.3 Rails程序运行测试 176
12.8.4 创建Rails应用程序 177
12.9 小结 178
第13章 深入学习Rails 179
13.1 Rails框架结构 179
13.1.1 目录结构 179
13.1.2 常用命令 181
13.1.3 命名约定 182
13.1.4 开发、测试、生产模式 183
13.1.5 Rails配置 183
13.1.6 ActiveSupport 184
13.2 ActiveRecord介绍 186
13.2.1 数据库与对象的映射关系 186
13.2.2 CRUD操作 188
13.2.3 表间关联 192
13.2.4 校验 195
13.2.5 回调 196
13.3 ActionController介绍 197
13.3.1 访问处理的流程 197
13.3.2 自定义路由 198
13.3.3 控制器中的变量 199
13.3.4 控制器的应答 201
13.3.5 过滤器 202
13.4 ActionView介绍 203
13.4.1 视图模板简介 203
13.4.2 rhtml模板 204
13.4.3 辅助方法Helper 204
13.4.4 布局模板和局部页面模板 209
13.5 Rails的插件 210
13.5.1 了解Rails的插件 210
13.5.2 可视化的HTML编辑器FCKEditor for Rails 210
13.5.3 自动发送错误邮件Exception Notifier 211
13.5.4 活动脚手架ActiveScaffold插件 212
13.6 小结 221
第14章 迁移Migration技术 222
14.1 迁移技术概述 222
14.2 创建迁移任务 222
14.3 结构迁移 224
14.3.1 创建、重命名和删除表 224
14.3.2 添加、修改和删除字段 225
14.3.3 管理索引 226
14.4 数据迁移 227
14.5 其他迁移 228
14.6 执行迁移操作 229
14.7 小结 229
第15章 Rails中Ajax的应用 231
15.1 Ajax介绍 231
15.2 Prototype介绍 232
15.2.1 Prototype概述 232
15.2.2 实用方法介绍 232
15.2.3 Element类 234
15.2.4 Enumerable类 235
15.2.5 Ajax类 236
15.2.6 Prototype应用示例 237
15.3 Rails的辅助方法 240
15.3.1 link_to_remote方法 240
15.3.2 form_remote_tag方法 242
15.3.3 observe_field方法 244
15.3.4 periodically_call_remote方法 244
15.4 小结 245
第16章 使用ActionMailer发送电子邮件 246
16.1 ActionMailer概述 246
16.2 创建邮件发送器 247
16.3 修改发送模型和视图 249
16.4 发送邮件 250
16.5 发送HTML格式邮件 251
16.6 为邮件添加附件 253
16.7 小结 255
第17章 网站测试 256
17.1 Rails测试结构 256
17.2 模型的测试 257
17.2.1 测试模型HelloText类的CRUD方法 258
17.2.2 测试模型校验方法 260
17.2.3 测试自定义方法 261
17.3 控制器的测试 262
17.4 运行测试 265
17.5 小结 266
第18章 调试和部署 267
18.1 调试 267
18.1.1 使用console控制台 267
18.1.2 使用Logger类 269
18.1.3 在NetBeans里面进行调试 270
18.1.4 使用Firebug进行客户端调试 271
18.2 发布和部署Rails网站 273
18.2.1 常见的部署方式 273
18.2.2 安装Apache 274
18.2.3 安装Mongrel 274
18.2.4 部署配置 275
18.3 小结 277
第四篇 开发实战 279
第19章 模拟生命游戏 279
19.1 生命游戏介绍 279
19.2 初步设计 280
19.2.1 功能分析 280
19.2.2 界面设计 280
19.3 编写代码 281
19.3.1 界面代码 281
19.3.2 细胞演化代码 286
19.3.3 绘图及事件响应代码 288
19.3.4 完成项目代码 290
19.4 小结 299
第20章 自制Ruby编辑器 300
20.1 界面和功能分析 300
20.2 界面实现 301
20.2.1 菜单实现 301
20.2.2 文件选择Tab和编辑区域的实现 302
20.3 创建Ruby Editor项目实战 306
20.3.1 创建Ruby Editor项目 306
20.3.2 创建主程序ruby_editor.rb 307
20.3.3 创建文本编辑控件代码文件scintilla.rb 307
20.3.4 修改主程序ruby_editor.rb,完善程序界面 309
20.3.5 运行测试 312
20.4 事件响应处理 312
20.5 功能实现 313
20.5.1 实现新建、打开和保存文件功能 313
20.5.2 查找和替换功能的实现 322
20.6 代码完善 325
20.6.1 主程序ruby_editor.rb 325
20.6.2 主界面aui_frame.rb 325
20.6.3 文本编辑器控件类scintilla.rb 330
20.7 小结 332
第21章 Digger掘客网站 333
21.1 功能及用例分析 333
21.1.1 功能分析 333
21.1.2 用例分析 335
21.2 界面与数据库设计 335
21.2.1 界面设计 335
21.2.2 数据库设计 336
21.3 开始编码 337
21.3.1 创建digger项目 337
21.3.2 数据库配置 338
21.3.3 使用acts_as_authenticated插件 339
21.3.4 创建模型 341
21.3.5 创建控制器和视图 344
21.3.6 完善界面 351
21.4 加入分类标记功能 354
21.4.1 安装acts_as_taggable插件 354
21.4.2 修改Content模型 355
21.4.3 修改相关动作和视图 356
21.5 小结 359
第22章 用Rails开发留言簿系统 360
22.1 系统分析和设计流程 360
22.1.1 浏览留言簿主界面 360
22.1.2 浏览用户留言 361
22.1.3 新建留言 361
22.1.4 管理员查看留言列表 362
22.1.5 管理员修改留言 363
22.1.6 管理员新建留言 363
22.1.7 整体设计思路 363
22.2 分析并设计数据库 364
22.3 Rails开发步骤 364
22.3.1 创建Rail Web应用项目 365
22.3.2 创建数据库和配置数据库连接 365
22.3.3 创建模型类 365
22.3.4 给模型类添加业务逻辑处理 366
22.3.5 给模型类添加验证逻辑处理 366
22.3.6 创建普通用户访问Web控制器guestbook 367
22.3.7 定义普通用户请求页面统一布局 367
22.3.8 添加逻辑处理并修改相应的视图模板完成页面输出 368
22.3.9 创建管理员访问Web控制器guestbookadmin 373
22.3.10 定义管理员请求页面统一布局 373
22.3.11 逻辑处理并修改相应的视图模板完成页面输出 373
22.3.12 测试运行 378
22.4 小结 378
附录 常用类函数 379