クラスのDSL構築を次のようなものにしたい
class Car
brand :mercedes
end
どのコードを書く必要がありますか?
brand
メソッドである必要があります。どこかで定義する必要があります。オプションがあります:まったく同じクラス、親クラス、または混合モジュール。私はモジュールが好きです。
module MyDSL
def brand name
puts "Got brand #{name}"
end
end
class Car
extend MyDSL
brand :mercedes
end
# >> Got brand mercedes
これはあなたの具体的な質問に答えますが、私はこの本を手に入れることを強くお勧めします:メタプログラミングRuby。そこにはたくさんの答えがあるようです。