文字列(メソッド名)とブロック(メソッドの内容)からRubyでインスタンスメソッドを定義することは可能ですか?
これには instance_eval() を使用する必要があると思いますが、2 つのデータ型を混在させる方法はまだわかりません。文字列とブロックの両方が動的に決定されるため、先頭に「def #{string}」を付けてブロックを作成すると機能します-これを行う方法がわかりません。
私のユース ケースは、Bacula 構成ファイルを表すクラスです。構成ファイルには、さまざまな種類のリソースを含めることができます。それらはすべて、舞台裏で比較的複雑なデータ構造に格納されています (他の理由により、この構造を単純化しても、私が探しているものを達成することはできません)。名前付きメソッドを介してリソースにすばやくアクセスできるようにしたいと考えています。
たとえば、A は 1 つの構成ファイルを表し、B は別の構成ファイルを表します。A にはリソース Director、Client、Job があり、B には Messages と Director があります。
この場合、A にはメソッド director()、client()、および job() が必要であり、B には messages() および director() があります。これらのそれぞれは、オブジェクトのそれぞれの構成ファイルから関連するリソースを返します。
これを行うためのより簡単な方法 ([] メソッドの実装など) があることは知っていますが、現時点では、好奇心のためにより難しい解決策を追求しています。