第1章 Ruby语言、Ruby on Rails框架和RailsCoders项目 1
1.1 RailsCoders项目 1
1.2 Ruby语言和Ruby onRails框架 2
1.2.1 Ruby语言历史概况 2
1.2.2 什么是Ruby on Rails 3
1.3 搭建RailsCodes网站所需的软件 6
1.4 升级Rails 7
1.5 安装Ruby、Rails和MySQL 7
1.5.1 在Windows上安装 7
1.5.2 在Mac OS X中安装 9
1.5.3 在Linux中安装 10
1.6 创建Rails应用程序的框架 11
1.7 设置数据库 14
1.7.1 创建数据库 15
1.7.2 配置Rails以使用数据库 15
1.7.3 测试数据库 16
1.8 小结 17
第2章 开发内容管理系统 18
2.1 确定功能需求 18
2.2 Rails、路由和REST 18
2.2.1 传统的Rails路由 19
2.2.2 REST方式的Rails路由 19
2.3 构建网站布局 20
2.4 设计页面和页面编辑器 23
2.4.1 Page模型 23
2.4.2 页面控制器 24
2.5 创建Page模型 24
2.5.1 迁移任务 24
2.5.2 生成模型 25
2.5.3 创建控制器 29
2.5.4 设置默认页面 36
2.5.5 在侧栏菜单中添加链接 37
2.6 测试 37
2.6.1 创建测试数据库 37
2.6.2 为Page模型开发单元测试 37
2.7 扩展内容管理系统 39
2.8 小结 40
第3章 添加用户和组 41
3.1 确定功能需求 41
3.1.1 定义User模型 41
3.1.2 Role模型和连接表 42
3.1.3 控制器 43
3.1.4 会话和Cookie 44
3.2 创建User模型 44
3.3 会话处理库 47
3.4 创建控制器 48
3.4.1 用户控制器 48
3.4.2 账户控制器 50
3.5 创建用户账户视图 51
3.5.1 新用户视图 52
3.5.2 登录视图 53
3.5.3 用户信息展示视图 54
3.6 添加管理视图 56
3.6.1 在索引视图中列出全部用户 56
3.6.2 使用edit.rhtml来编辑用户 58
3.7 测试 58
3.7.1 单元测试 58
3.7.2 功能测试 60
3.8 添加角色 63
3.8.1 创建Role模型和连接表 63
3.8.2 检测用户角色 65
3.8.3 管理角色 66
3.9 测试角色功能性 69
3.10 扩展用户管理系统 71
3.11 小结 71
第4章 搭建提供RSS Feed和API的新闻博客 72
4.1 确定功能需求 72
4.1.1 Textile标注 72
4.1.2 Article模型 73
4.1.3 定义Category模型 73
4.1.4 编辑角色 74
4.1.5 文章控制器 74
4.1.6 分类控制器 74
4.2 安装RedCloth Gem包 75
4.3 创建Article模型和Category模型 75
4.3.1 编写数据库迁移任务 75
4.3.2 定义模型间的关联关系 77
4.3.3 定义验证 77
4.3.4 删除分类时自动置空cateqory_id……78y 78
4.3.5 自动更新published_at字段 78
4.3.6 添加编辑角色 78
4.4 创建文章控制器和视图 79
4.4.1 映射REST资源 79
4.4.2 文章控制器 80
4.4.3 文章视图 85
4.5 使用文章功能部件 88
4.5.1 测试XML API 88
4.5.2 为API添加HTTP验证 90
4.5.3 测试API验证 91
4.6 创建分类控制器和视图 92
4.6.1 分类控制器 92
4.6.2 分类视图 94
4.6.3 在侧栏菜单中添加链接 96
4.7 手动测试新闻博客系统 96
4.8 测试新闻博客 96
4.8.1 功能测试 98
4.8.2 综合测试 100
4.9 新闻系统的进阶开发 101
4.10 小结 102
第5章 搭建交流论坛 103
5.1 确定交流论坛的功能需求 103
5.1.1 定义Forum模型 104
5.1.2 定义Topic模型 104
5.1.3 定义Post模型 104
5.1.4 版主角色 105
5.1.5 论坛控制器、主题控制器和帖子控制器 105
5.2 搭建论坛 105
5.2.1 创建Forum模型、Topic模型和Post模型 106
5.2.2 检测用户角色的版主权限 111
5.2.3 添加嵌套的资源路由映射 111
5.2.4 修改布局模板和样式表 112
5.2.5 论坛控制器及其对应的视图 112
5.2.6 主题控制器及其对应的视图 116
5.2.7 帖子控制器及其对应的视图 121
5.2.8 在侧栏菜单中添加链接 125
5.2.9 测试主题和帖子 125
5.2.10 限制版主之外的用户访问行为方法 126
5.3 测试论坛 127
5.3.1 创建测试夹具 127
5.3.2 创建功能测试 128
5.4 交流论坛的进阶开发 133
5.5 小结 134
第6章 构建支持Web服务的博客引擎 135
6.1 确定博客引擎的功能需求 135
6.1.1 Entry模型 135
6.1.2 Comment模型 136
6.1.3 User模型 136
6.1.4 日志控制器 136
6.1.5 评论控制器 137
6.1.6 博客控制器 137
6.1.7 博客API 137
6.2 构建博客系统 137
6.2.1 博客的框架代码 138
6.2.2 编写迁移任务 139
6.2.3 模型间的关联关系和验证 141
6.2.4 创建资源映射 142
6.2.5 博客名称辅助方法 142
6.2.6 为用户资料页面添加博客标题 143
6.2.7 控制器和视图 144
6.2.8 测试日志控制器 151
6.2.9 创建并测试评论控制器 152
6.2.10 为用户资料添加最新博客日志 156
6.2.11 博客控制器 157
6. 3创建XML-RPC博客接口 158
6.3.1 Action Web Service 159
6.3.2 生成Web服务代码 159
6.3.3 定义API方法调用 159
6.3.4 编写博客API方法代码 161
6.3.5 测试Web服务 163
6.3.6 使用桌面博客客户端工具进行测试 164
6.3.7 自动测试博客API 165
6.4 博客系统的进阶开发 167
6.5 小结 167
第7章 构建相册 168
7.1 处理上传的文件 168
7.2 attachment_fu插件 169
7.3 相册的功能需求 171
7.3.1 定义Photo模型 171
7.3.2 照片控制器 172
7.4 安装ImageMagick、RMagick和attachment_fu 172
7.4.1 Windows下的安装 172
7.4.2 OS X下的安装 173
7.4.3 Linux下的安装 173
7.4.4 安装attachment_fu插件 173
7.5 建立相册 173
7.5.1 生成框架代码 174
7.5.2 编写迁移任务 174
7.5.3 创建Photo模型及相应的关联关系 175
7.5.4 映射照片资源 176
7.5.5 照片控制器和用户照片控制器 177
7.5.6 照片视图 179
7.6 手动测试相册 184
7.7 编写测试用例 185
7.7.1 创建照片夹具 185
7.7.2 单元测试 186
7.7.3 功能测试 187
7.8 相册功能的进阶开发 190
7.9 小结 190
第8章 发送电子邮件并建立新闻公告邮件列表 191
8.1 使用ActionMailer 191
8.2 确定电子邮件功能需求 192
8.2.1 新评论的电子邮件通知 192
8.2.2 新闻公告邮件 193
8.3 建立新评论通知器 193
8.3.1 创建邮件发送器 194
8.3.2 手动测试电子邮件的创建 196
8.3.3 从评论控制器调用邮件发送器 199
8.3.4 从应用程序内部测试邮件发送器 200
8.3.5 自动邮件发送器的测试 200
8.4 建立新闻公告功能 202
8.4.1 安装ar_mailer 202
8.4.2 创建框架资源 204
8.4.3 映射新闻公告资源 205
8.4.4 Newsletter模型 206
8.4.5 编写新闻公告控制器及其对应的视图 206
8.4.6 创建新闻公告发送器 211
8.4.7 在侧栏菜单中添加新闻公告 212
8.4.8 测试新闻公告邮件发送系统 212
8.5 电子邮件系统的进阶开发 214
8.6 小结 215
第9章 添加带有XFN详细信息的好友 216
9.1 微格式和XFN 216
9.2 好友功能需求 217
9.2.1 Friends资源 218
9.2.2 显示用户最近的活动 219
9.3 建立Friends资源 219
9.3.1 建立数据库迁移 220
9.3.2 建立Friends资源 222
9.3.3 更新用户最近活动信息 225
9.3.4 好友控制器及其对应的视图 226
9.3.5 在侧栏中添加好友链接 234
9.4 美化好友列表 235
9.5 测试 238
9.6 好友功能的进阶开发 240
9.7 小结 240
第10章 为相册添加标签 241
10.1 相册标注的功能需求 241
10.2 使用Rails实现标注 242
10.3 acts_as_taggable_on_steroids插件 243
10.4 构建照片标注功能 245
10.4.1 安装acts_as_taggable_on_steroids插件 245
10.4.2 创建数据库表 246
10.4.3 更新模型 247
10.4.4 创建控制器 248
10.4.5 添加资源映射 248
10.4.6 编写控制器和视图 249
10.4.7 为照片添加标签 252
10.4.8 链接到标签浏览器 257
10.5 手动测试 258
10.6 标签系统的进一步开发 260
10.7 小结 260
第11章 结合Web2.0创建Mashup 261
11.1 集成Google Maps API 261
11.1.1 地图功能需求 262
11.1.2 构建地图功能 262
11.2 集成Flickr API 275
11.2.1 Flickr功能需求 275
11.2.2 构建Flickr集成功能 276
11.3 使用Mashup做进一步开发 284
11.4 小结 284
第12章 为博客引擎添加个性化主题 285
12.1 博客模板需求 285
12.2 Liquid模板 286
12.2.1 Liquid API 286
12.2.2 Liquid标记 287
12.3 安装Liquid 288
12.4 构建博客模板功能 288
12.4.1 创建Liquid drop 288
12.4.2 创建Liquid过滤器 291
12.4.3 Usertemplate模型 292
12.4.4 用户模板控制器 293
12.4.5 用户模板视图 295
12.4.6 呈现Liquid模板 296
12.5 手动测试 297
12.6 测试用户模板控制器 300
12.7 用户模板的进阶开发 302
12.8 小结 302
第13章 添加移动接口 303
13.1 移动网络 303
13.2 RailsCoders移动网站需求 304
13.2.1 布局 304
13.2.2 用户资料 305
13.2.3 账户 305
13.2.4 页面 305
13.2.5 新闻 305
13.2.6 论坛 305
13.2.7 博客 305
13.2.8 相册 306
13.3 开发RailsCoders网站的移动版本 306
13.3.1 移动应用程序的架构 306
13.3.2 创建移动布局和样式表 306
13.3.3 资源映射 308
13.3.4 移动控制器和视图 310
13.4 手动测试 323
13.5 测试移动网站 324
13.6 移动网站的进阶开发 326
13.7 小结 326
第14章 部署、优化和扩展应用程序 327
14.1 部署RailsCoders网站 327
14.1.1 开发模式和产品模式 327
14.1.2 会话存储 327
14.1.3 选择主机 329
14.1.4 选择Web服务器 330
14.1.5 利用Capistrano和Deprec实现自动化部署 331
14.2 优化和扩展RailsCoders 338
14.2.1 观察日志文件 338
14.2.2 缓存 339
14.2.3 基准测试 341
14.3 小结 341