前言 vii致谢 ix引言 xi“元”这个字眼 xii关于本书 xix关于你 xxii第1部分 Ruby元编程 1第1章 星期一:对象模型 31.1 跟Bill在一起的星期一 31.2 打开类 41.3 类的真相 91.4 小测验:缺失的连接线 211.5 调用一个方法时发生了什么 231.6 小测验:混乱的模块 321.7 对象模型小结 35第2章 星期二:方法 372.1 一个重复代码的问题 382.2 动态方法 402.3 method_missing()方法 482.4 小测验:狩猎Bug 592.5 关于method_missing()方法的更多内容 61第3章 星期三:代码块 693.1 怎样度过驼峰日 703.2 小测验:Ruby的#符号 713.3 闭包 743.4 instance_eval() 83
3.5 可调用对象 863.6 编写一种领域专属语言 943.7 小测验:更好的领域专属语言 96第4章 星期四:类定义 1014.1 类定义揭秘 1024.2 小测验:Taboo类 1094.3 单件方法 1104.4 Eigenclass 1164.5 小测验:模块的麻烦 1294.6 别名 1314.7 小测验:打破数学规律 135第5章 星期五:编写代码的代码 1395.1 带路 1395.2 Kernel#eval 1425.3 小测验:校验过的属性(第一步) 1525.4 小测验:校验过的属性(第二步) 1555.5 小测验:校验过的属性(第三步) 1575.6 小测验:校验过的属性(第四步) 1585.7 钩子方法 1595.8 小测验:校验过的属性(第五步) 165第6章 尾声 167第2部分“Rails中的元编程” 169第7章 ActiveRecord的设计 1717.1 准备旅程 1727.2 ActiveRecord的设计 1747.3 经验教训 183第8章 深入ActiveRecord 1878.1 动态属性 1878.2 动态查找器 1958.3 经验教训 200第9章 安全元编程 2059.1 元编程的测试 2059.2 化解猴子补丁 2139.3 经验教训 218第三部分 附录 221附录A 常见惯用法 223A.1 拟态方法 223A.2 空指针保护 226A.3 关于方法参数的技巧 227A.4 Self Yield 231A.5 Symbol#to_proc()方法 232附录B 领域专属语言 235B.1 关于领域专属语言 235B.2 内部和外部领域专属语言 237B.3 领域专属语言和元编程 238附录C 法术手册 239C.1 法术集 239附录D 参考书目 251索引 253