第一部分 Ruby元编程
第1章 元这个字眼
1.1 鬼城与自由市场
1.2 程序员Bob的故事
1.3 元编程和Ruby
第2章 星期一:对象模型
2.1 打开类
2.2 类的真相
2.3 小测验:缺失的连接线
2.4 调用方法时发生了什么?
2.5 小测验:混乱的模块
2.6 对象模型小结
第3章 星期二:方法
3.1 代码繁复的问题
3.2 动态方法
3.3 method_missing方法
3.4 小测验:消灭Bug
3.5 白板类
3.6 小结
第4章 星期三:代码块
4.1 学习代码块
4.2 小测验:Ruby的#符号
4.3 代码块是闭包
4.4 instance_eval方法
4.5 可调用对象
4.6 编写领域专属语言(DSL)
4.7 小测验:改良的DSL
4.8 小结
第5章 星期四:类定义
5.1 揭秘类定义
5.2 小测验:Taboo类
5.3 单件方法
5.4 单件类
5.5 小测验:模块的麻烦
5.6 方法包装器
5.7 小测验:打破数学规律
5.8 小结
第6章 星期五:编写代码的代码
6.1 通向周末的编程之路
6.2 Kernel#eval方法
6.3 小测验:校验过的属性(第一步)
6.4 小测验:校验过的属性(第二步)
6.5 小测验:校验过的属性(第三步)
6.6 小测验:校验过的属性(第四步)
6.7 钩子方法
6.8 小测验:校验过的属性(第五步)
6.9 小结
第7章 尾声
第二部分 Rails中的元编程
第8章 准备Rails之旅
8.1 Ruby on Rails
8.2 安装Rails
8.3 Rails源代码
第9章 Active Record的设计
9.1 简短的Active Record示例
9.2 Active Record的组成
9.3 经验之谈
第10章 Active Support的Concern模块
10.1 Concern模块出现之前
10.2 ActiveSupport::Concern模块
10.3 经验之谈
第11章 alias_method_chain方法沉浮录
11.1 alias_method_chain方法的兴起
11.2 alias_method_chain方法的衰亡
11.3 经验之谈
第12章 属性方法的发展
12.1 属性方法实战
12.2 属性方法的发展史
12.3 经验之谈
第13章 最后的思考
元编程不过是编程
第三部分 附录
附录A 常见惯用法
A.1 拟态方法
A.2 空指针保护
A.3 Self Yield
A.4 Symbol#to_proc方法
附录B 领域专属语言
B.1 关于领域专属语言
B.2 内部和外部领域专属语言
B.3 领域专属语言和元编程
附录C 法术手册
索引
^ 收 起