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