Я пишу внутренний DSL в Ruby. Для этого мне нужно программно создать именованные классы и вложенные классы. Каков наилучший способ сделать это? Я считаю, что есть два способа сделать это:
- Используйте
Class.new
для создания анонимного класса, затем используйтеdefine_method
для добавления к нему методов и, наконец, вызовитеconst_set
, чтобы добавить их в качестве имен констант в какое-то пространство имен. - Используйте
eval
Я протестировал первый способ, и он сработал, но, будучи новым для Ruby, я не уверен, что правильное размещение классов как констант.
Есть ли другие, лучшие способы? Если нет, то какое из указанных выше предпочтительнее?