第一部分 起步 1
第1章 安装Rails 1
1.1 Windows上的安装 1
1.2 Mac OS X上的安装 3
1.3 Linux上的安装 4
1.4选择一个Rails版本 5
1.5设置开发环境 6
1.5.1命令行 6
1.5.2版本控制 6
1.5.3编辑器 7
1.5.4桌面 8
1.6 Rails和数据库 9
1.7本章小结 10
第2章 即时满足 11
2.1新建一个应用程序 11
2.2 Hello, Rails! 13
2.2.1 Rails和URL请求 14
2.2.2第一个动作 14
2.2.3创建动态网页 15
2.2.4动态内容 15
2.2.5把时间加上 16
2.2.6故事讲到现在 17
2.3把页面连起来 18
2.4本章小结 20
2.4.1练习时间 20
2.4.2清理现场 21
第3章Rails应用程序框架 22
3.1模型、视图以及控制器 22
3.2 Rails的模型支持 24
3.2.1对象-关系映射 24
3.2.2 Active Record 25
3.3 Action Pack:视图与控制器 26
3.3.1视图支持 26
3.3.2还有控制器 26
第4章Ruby简介 28
4.1 Ruby是一门面向对象的语言 28
4.1.1 Ruby命名规则 29
4.1.2方法 29
4.2数据类型 30
4.2.1字符串 30
4.2.2数组和散列 30
4.2.3正则表达式 32
4.3逻辑方法 32
4.3.1控制结构 32
4.3.2代码块和迭代器 33
4.3.3异常 34
4.4组织结构 34
4.4.1类 34
4.4.2模块 36
4.4.3 YAML 36
4.5封送对象 37
4.6综合分析 37
4.7 Ruby语言习语 38
第二部分 构建应用程序 41
第5章Depot应用程序 41
5.1增量式开发 41
5.2 Depot是做什么的 42
5.2.1用例 42
5.2.2页面流程 42
5.2.3数据 44
5.3让我们来编码吧 45
第6章 任务A:创建应用程序 46
6.1迭代A1:创建商品维护的应用程序 46
6.1.1创建Rails应用程序 46
6.1.2创建数据库 46
6.1.3生成脚手架 47
6.1.4应用迁移 48
6.1.5查看商品清单 49
6.2迭代A2:美化商品清单 51
6.3本章小结 54
练习时间 55
第7章 任务B:验证和单元测试 57
7.1迭代B1:验证 57
7.2迭代B2:模型的单元测试 60
7.2.1真正单元测试 61
7.2.2静态测试 63
7.2.3使用静态测试数据 66
7.3本章小结 67
练习时间 67
第8章 任务C:商品目录显示 68
8.1迭代C1:创建商品目录清单 68
8.2迭代C2:增加页面布局 71
8.3迭代C3:用帮助函数来调整价格格式 74
8.4迭代C4:控制器功能测试 74
8.5本章小结 77
练习时间 77
第9章 任务D:创建购物车 78
9.1迭代D1:寻找购物车 78
9.2迭代D2:将产品放到购物车中 79
9.3迭代D3:添加一个按钮 81
9.4本章小结 85
练习时间 85
第10章 任务E:更智能的购物车 86
10.1迭代E1:创建更智能的购物车 86
10.2迭代E2:错误处理 90
10.3迭代E3:对购物车的最后加工 92
10.4本章小结 96
练习时间 96
第11章 任务F : Ajax初体验 97
11.1迭代F1:转移购物车 97
11.1.1局部模板 97
11.1.2改变流程 101
11.2迭代F2:建立一个基于Ajax的购物车 102
11.2.1排疑解难 103
11.2.2客户永远不会满足 104
11.3迭代F3:高亮变化 104
11.4迭代F4:隐藏一个空的购物车 106
11.5测试Ajax改变 110
11.6本章小结 111
练习时间 112
第12章 任务G:付款 113
12.1迭代G1:获取订单 113
12.1.1创建获取订单的表单 114
12.1.2获取订单细节 120
12.1.3最后一个Ajax更改 124
12.2循环G2:Atom推送 125
12.3迭代G3:分页 128
12.4本章小结 131
练习时间 131
第13章 任务H:发送电子邮件 132
13.1迭代H1:发送确认邮件 132
13.1.1配置邮件 132
13.1.2发送邮件 133
13.1.3邮件模板 134
13.1.4生成邮件 135
13.1.5发送多内容类型 136
13.1.6邮件功能测试 137
13.2迭代H2:应用程序的集成测试 138
13.3本章小结 142
练习时间 142
第14章 任务I:登录 143
14.1迭代I1:添加用户 143
14.2迭代I2:认证用户 150
14.3迭代I3:限制访问 155
14.4迭代I4:增加侧边栏,更多管理 157
14.5本章小结 160
练习时间 160
第15章 任务J:国际化 161
15.1迭代J1:选择语言环境 161
15.2迭代J2:翻译在线商店页面 164
15.3迭代J3:翻译结账页面 169
15.4迭代J4:添加语言环境的切换器 174
15.5本章小结 175
练习时间 176
第16章 任务K:部署和产品环境 177
16.1迭代K1:用Phusion Passenger和MySQL部署 178
16.1.1安装Passenger 178
16.1.2在本地部署应用程序 179
16.1.3使用MySQL数据库 180
16.1.4加载数据库 182
16.2迭代K2:用Capistrano远程部署 183
16.2.1准备好部署服务器 183
16.2.2把应用程序放到版本管理下 184
16.2.3远程部署应用程序 185
16.2.4冲洗,洗净,重复 187
16.3迭代K3:检查部署的应用程序 188
16.3.1查看日志文件 188
16.3.2使用命令行界面来查看实时的应用程序 188
16.3.3处理日志文件 189
16.3.4开始发行,超越自我 189
16.4本章小结 190
练习时间 190
第17章Depot回顾 191
17.1 Rails的概念 191
17.1.1模型 191
17.1.2视图 192
17.1.3控制器 192
17.1.4配置 192
17.1.5测试 193
17.1.6部署 193
17.2文档化所做的事情 193
第三部分 深入Rails 195
第18章 自己去发现Rails(工作)方法 195
18.1东西都去哪里了 195
18.1.1应用程序的位置 197
18.1.2测试的位置 197
18.1.3文档的位置 197
18.1.4支持库的位置 198
18.1.5 Rake任务的位置 199
18.1.6日志的位置 200
18.1.7静态网页的位置 200
18.1.8脚本的位置 200
18.1.9临时文件的位置 201
18.1.10第三方代码的位置 201
18.1.11配置的位置 201
18.2命名约定 202
18.2.1混合大小写、下划线和复数 202
18.2.2把控制器分组到模块中 203
18.3本章小结 205
第19章Active Record模块 206
19.1定义数据结构 206
19.1.1使用表和字段的规则 206
19.1.2 Active Record所提供的附加字段 209
19.2查找和遍历记录 210
19.2.1识别单个行 210
19.2.2模型关联性说明 211
19.2.3一对一关联 211
19.2.4一对多关联 212
19.2.5多对多关联 212
19.3创建、读取、更新和删除操作 213
19.3.1创建新的行记录 213
19.3.2读取已有行记录 215
19.3.3动态查询器 216
19.3.4 SQL语言与Active Record模块 217
19.3.5使用like查询子句 218
19.3.6构造返回记录的子集 219
19.3.7获取字段统计 221
19.3.8范围函数 221
19.3.9编写自己SQL语句 222
19.3.10重新加载数据 224
19.3.11更新现有行记录 224
19.3.12方法save、 save!、create和create! 225
19.3.13删除行记录 226
19.4干预跟踪进程 227
19.4.1成组相关回调 228
19.4.2观察器 231
19.4.3观察器实例化 232
19.5数据库事务 232
19.6本章小结 235
第20章 行为调度和行为控制 237
20.1分派请求到控制器 237
20.1.1 REST:表述性状态转移 238
20.1.2添加附加行为 243
20.1.3嵌套资源 243
20.1.4浅路由嵌套 243
20.1.5选择数据表述 244
20.1.6测试路由 245
20.2处理请求 246
20.2.1行为方法 246
20.2.2控制器环境 246
20.2.3用户响应 248
20.2.4呈现模板 248
20.2.5发送文件和其他数据 251
20.2.6重定向 253
20.3持续请求的对象和操作 255
20.3.1 Rails会话 255
20.3.2会话存储 257
20.3.3比较会话存储选项 258
20.3.4会话逾期与清除 259
20.3.5闪存:行为间通信 259
20.3.6过滤器 260
20.3.7前置和后置过滤器 260
20.3.8过滤器继承 261
20.4本章小结 261
第21章Action View模块 263
21.1使用模板 263
21.1.1模板存放的位置 263
21.1.2模板运行的环境 264
21.1.3模板包含的内容 264
21.2生成表单 265
21.3处理表单 267
21.4上传文件到Rails应用程序 268
21.5使用帮助程序 271
21.5.1自定义的帮助程序 272
21.5.2格式和链接帮助程序 272
21.5.3格式帮助程序 272
21.5.4链接到其他页面和资源 274
21.6用页面布局和局部模板减轻维护工作 277
21.6.1布局 277
21.6.2放置布局文件 278
21.6.3传递数据到布局 279
21.6.4局部页面模板 281
21.6.5局部模板和集合 282
21.6.6共享模板 283
21.6.7局部模板与布局 283
21.6.8局部模板和控制器 283
21.7本章小结 283
第22章 缓存 285
22.1页面缓存 285
22.2让页面失效 287
22.2.1显式地让页面失效 287
22.2.2挑选缓存存储策略 288
22.2.3隐式地让页面失效 289
22.2.4让基于时间的缓存页面失效 290
22.2.5正确处理客户端缓存 291
22.2.6过期头 291
22.2.7最后的修改和ETag支持 291
22.3片段缓存 292
22.4本章小结 296
第23章 数据迁移 297
23.1创建和运行迁移 297
23.2剖析迁移 299
23.2.1字段的类型 300
23.2.2重命名字段 301
23.2.3修改字段 302
23.3表的管理 302
23.3.1表的创建选项 303
23.3.2表的重命名 304
23.3.3 rename table方法的问题 304
23.3.4定义索引 305
23.3.5主键 306
23.3.6没有主键的表 306
23.4高级迁移 306
23.4.1使用原生SQL 307
23.4.2扩展迁移 307
23.4.3自定义消息和基准测试程序 309
23.5当迁移变糟时 309
23.6迁移外的模式管理 310
23.7本章小结 311
第24章 非浏览器应用 312
24.1用Active Record开发独立应用程序 312
24.2使用Active Support库功能 313
24.2.1核心扩展 313
24.2.2附加的Active Support类 315
24.2.3使用Action View帮助程序 317
24.3使用Active Resource开发远程应用程序 317
24.3.1访问和更新简单属性 317
24.3.2关系和集合 318
24.3.3汇总整理 320
24.4本章小结 321
第25章Rails包依赖关系 322
25.1用构建器生成XML 322
25.2用ERb生成HTML 323
25.3用Bundler管理包依赖关系 325
25.4用Rack实现与Web服务器的交互 327
25.5自动执行任务工具Rake 330
25.6 Rails包依赖关系揭秘 331
25.7本章小结 333
第26章Rails插件 334
26.1信用卡业务处理插件Active Merchant 334
26.2节约带宽的插件Asset Packager 335
26.3用Haml美化标记语言 337
26.4用JQuery少写多做 339
26.5在RailsPlugins.org上找出更多 342
26.6本章小结 343
第27章 整装进发 344
参考文献 345