Я пытаюсь создать смешанную задачу для автоматизации некоторых строительных лесов, и я хочу получить список всех имен модулей в приложении, которые имеют реализацию схемы и схемы внедрения. В конце концов я хотел бы иметь список всех схем с определениями полей, а не только именами модулей. Можем ли мы его получить, и если да, то как, предоставляет ли ecto такой API?
Экто | Как получить все модули схемы в приложении
Ответы (1)
Согласно документации Ecto.Schema
,
Любой модуль схемы будет генерировать функцию
__schema__
, которую можно использовать для самоанализа схемы во время выполнения.
Вы можете использовать это вместе с собственными средствами самоанализа Erlang и Elixir для фильтрации всех соответствующих модулей и аккуратного извлечения деталей любых определенных схем, например:
{:ok, modules} = :application.get_key(:your_app, :modules)
modules
|> Enum.filter(&({:__schema__, 1} in &1.__info__(:functions)))
|> Enum.each(&(IO.inspect(&1.__schema__(:fields))))
person
Vadim Landa
schedule
14.03.2019
Спасибо, Вадим! Именно то, что мне было нужно.
- person AndreyKo; 14.03.2019