第1部分Ruby元编程 1
第1章 星期一:对象模型 3
1.1跟Bill在一起的星期一 3
1.2打开类 4
1.3类的真相 9
1.4小测验:缺失的连接线 21
1.5调用一个方法时发生了什么 23
1.6小测验:混乱的模块 32
1.7对象模型小结 35
第2章 星期二:方法 37
2.1一个重复代码的问题 38
2.2动态方法 40
2.3 method missing()方法 48
2.4小测验:狩猎Bug 59
2.5关于method_ missing()方法的更多内容 61
第3章 星期三:代码块 69
3.1怎样度过驼峰日 70
3.2小测验:Ruby的#符号 71
3.3闭包 74
3.4 instance eval() 83
3.5可调用对象 86
3.6编写一种领域专属语言 94
3.7小测验:更好的领域专属语言 96
第4章 星期四:类定义 101
4.1类定义揭秘 102
4.2小测验:Taboo类 109
4.3单件方法 110
4.4 Eigenclass 116
4.5小测验:模块的麻烦 129
4.6别名 131
4.7小测验:打破数学规律 135
第5章 星期五:编写代码的代码 139
5.1带路 139
5.2 Kernel#eval 142
5.3小测验:校验过的属性(第一步) 152
5.4小测验:校验过的属性(第二步) 155
5.5小测验:校验过的属性(第三步) 157
5.6小测验:校验过的属性(第四步) 158
5.7钩子方法 159
5.8小测验:校验过的属性(第五步) 165
第6章 尾声 167
第2部分Rails中的元编程 169
第7章ActiveRecord的设计 171
7.1准备旅程 172
7.2 ActiveRecord的设计 174
7.3经验教训 183
第8章 深入ActiveRecord 187
8.1动态属性 187
8.2动态查找器 195
8.3经验教训 200
第9章 安全元编程 205
9.1元编程的测试 205
9.2化解猴子补丁 213
9.3经验教训 218
第3部分 附录 221
附录A常见惯用法 223
A.1拟态方法 223
A.2空指针保护 226
A.3关于方法参数的技巧 227
A.4 Self Yield 231
A.5 Symbol#to_roc()方法 232
附录B领域专属语言 235
B.1关于领域专属语言 235
B.2内部和外部领域专属语言 237
B.3领域专属语言和元编程 238
附录C法术手册 239
C.1法术集 239
附录D参考书目 251
索引 253