Можно ли определить метод экземпляра в ruby из строки (имя метода) и блока (содержимое метода)?
Я предполагаю, что для этого нужно будет использовать instance_eval (), но я еще не выяснил, как смешать два типа данных. И строка, и блок определяются динамически, поэтому будет полезно создать блок с «def # {string}» в начале - я не знаю, как это сделать.
Мой вариант использования - это класс, представляющий файл конфигурации Bacula. Файл конфигурации может иметь много разных типов ресурсов. Все они хранятся в относительно сложной структуре данных за кулисами (по другим причинам упрощение этой структуры не даст того, что я ищу). Мне бы хотелось, чтобы ресурсы были быстро доступны через именованные методы.
Например, A представляет один файл конфигурации, B представляет другой. У A есть директор по ресурсам, Клиент, Работа, а у B есть Сообщения и Директор.
В этом случае у A должны быть методы Director (), client () и job (), а у B - messages () и Director (). Каждый из них возвращает соответствующий ресурс из соответствующего файла конфигурации объекта.
Я знаю, что есть более простые способы сделать это (например, реализовать метод []), но сейчас я стремлюсь к более сложному решению ради любопытства.