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