用途:该技能面向 Ruby 元编程,帮助构建配置或测试用 DSL、减少重复代码、创建灵活 API 与实现框架;资料同时建议在简单方法即可满足、代码清晰优先或调试会变困难时避免使用。
主要能力:动态方法定义(define_method 批量生成方法);method_missing 与 respond_to_missing? 实现灵活属性访问;class_eval/module_eval 与 instance_eval 动态添加方法或在对象上下文求值;模块钩子 included/extended、类钩子 inherited、方法钩子 method_added;DSL 创建(配置 DSL、Builder DSL);对象模型(单例类、祖先链、prepend 与 include 的区别)。
使用方式:资料以代码示例展示各技术,例如用 OPERATIONS 哈希配合 define_method 生成加减乘除方法,用 instance_eval(&block) 实现 configure 配置块,用 prepend 让 Logging#save 在目标方法前后执行。参考文件 references/metaprogramming-patterns.md 收录常见模式与反模式。
适用场景:构建 DSL、框架开发、减少样板代码、动态 API。
限制:资料未提供安装命令、版本要求、收费或平台信息;字符串形式 class_eval 建议谨慎使用;元编程可能降低可读性并增加调试难度。