iex(14)> ExPlugins.get_plugins(MyServer.PermsBehaviour)
[MyServer.Perms.Auth.Permission, MyServer.Perms.Auth.Profile,
MyServer.Perms.Auth.Users, MyServer.Perms.Auth, MyServer.Perms.Help.Issue,
MyServer.Perms.Help, MyServer.Perms.Messenger,
MyServer.Perms.SomeOtherSection.Report, MyServer.Perms.SomeOtherSection.Requirement,
MyServer.Perms.SomeOtherSection.Semester, MyServer.Perms.SomeOtherSection.Student.Requirement,
MyServer.Perms.SomeOtherSection.Student.Semester, MyServer.Perms.SomeOtherSection.Student,
MyServer.Perms.SomeOtherSection, MyServer.Perms.Tag]
It is my Elixir port of my old Erlang plugin system (so much easier to write here). It detects what module implement a behaviour, verify they are loaded into the system, if not it loads them, then returns a list of them (while caching the results for faster response later along with being able to purge the cache via `ExPlugin.clear_cache(MyServer.PermsBehaviour)` or just `ExPlugin.clear_cache()` to clear everything. But yes, I had to load the modules properly to detect their information.