-
method_missing: 这个方法允许以开放的态度接受信息,而对开放程度把握是个权衡。安全做法都是加以限制。
-
完全限制
RANGE = %w(one two three) def method_missing(method_id, *args, &block) RANGE.include?(method_id.to_s) || super # do sth end
-
开放限制
- 正则匹配等
refer: metaprogramming ruby 2.4节
-
(书粗读了一遍,也在看一些比较流行的 gem 的代码,还需熟悉。待整理吧