but now getting ** (EXIT) :invalid_name **
I wonder if there is any way to make it work or if some one more familiar with this library and can help me.
means the supervisor will call Cachex.start_link/1 like this:
Cachex.start_link([:requests, []])
rather than Cachex.start_link/2, which is probably what you expected:
Cachex.start_link(:requests, [])
So passing {Cachex, :requests} instead should work, because it’ll call Cachex.start_link(:requests).
If you want to pass options later on you’ll have to set the start function in the child spec yourself to make sure it calls start_link/2 and not start_link/1.
For context, recent Elixir guidelines are to always use start_link/1, so it’s normally not a problem. Cachex probably predates that.
After a decade of using elixir, the supervision tree and child spec formats are perhaps my only frustration. For 1.15 and Cachex 3.6, the following seems to work:
def start(_type, _args) do
children = [
Supervisor.child_spec(Cachex.child_spec(name: :tags_cache, limit: 10_000), id: :cachex_tags),
Supervisor.child_spec(Cachex.child_spec(name: :prefs_cache, limit: 10_000), id: :cachex_prefs),
]