ruby dsl
このgenerate_methodはモジュールGに定義され、一連のパラメータを受け入れて関連するメソッドを動的に作成する.クラスCにgenerate_を宣言することでDSL機能を実現しましたmethod:method 1,:method 2,クラスCに2つのインスタンスメソッドmethod 1,method 2を動的に追加させるのは面白いのではないでしょうか.
- module ModuleA
- def self.included(c) #
- c.extend(ModuleB)
- end
-
- module ModuleB
- def generate_method(*args)
- args.each do|method_name|
- define_method(method_name){puts method_name}
- end
- end
- end
-
- end
- class Test
- include ModuleA
- generate_method :method_one , :method_two
-
- end
-
- a = Test.new
- a.method_one
- a.method_two