Get all modules implementing an Elixir behaviour.
See this article for an analysis of the problem, the circumstances for when to use this library, how it works and its caveats.
The Hex package can be installed as usual, by adding behaviour_reflection
to your list of dependencies in mix.exs
:
def deps do
[
{:behaviour_reflection, "~> 0.1"}
]
end
Let's say you have a behaviour and a number of modules implementing it:
defmodule MyBehaviour do
@callback fun :: String.t
end
defmodule Foo do
@behaviour MyBehaviour
def fun(), do: "foo"
end
defmodule Bar do
@behaviour MyBehaviour
def fun(), do: "bar"
end
At runtime you can retrieve all modules implementing the behaviour like this:
iex> Behaviour.Reflection.impls(MyBehaviour)
[Foo, Bar]
Documentation can be found at https://hexdocs.pm/behaviour_reflection.