From a4902e0cb709af161726ab988641f4022fa91eb0 Mon Sep 17 00:00:00 2001 From: Gary Rennie Date: Thu, 21 Nov 2024 09:30:17 +0000 Subject: [PATCH] fix: use correct starting function for child_spec/1 Previously, the `child_spec/1` function referenced a non-existent run function. This would mean that a child spec such as: {HashRing.Managed, [name: :foo]} Would not work, instead requiring the start function to be explicitly specified: {HashRing.Managed, [name: :foo, start: {HashRing.Managed, :new, [:foo, []]}]} This commit uses the `new/2` function instead. --- lib/managed_ring.ex | 2 +- test/hashring_managed_test.exs | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/managed_ring.ex b/lib/managed_ring.ex index 071199d..14b8b04 100644 --- a/lib/managed_ring.ex +++ b/lib/managed_ring.ex @@ -56,7 +56,7 @@ defmodule HashRing.Managed do id: opts[:id] || opts[:name], type: :worker, restart: :permanent, - start: {__MODULE__, :run, [opts[:name], Keyword.take(opts, @valid_ring_opts)]} + start: {__MODULE__, :new, [opts[:name], Keyword.take(opts, @valid_ring_opts)]} }, Map.new(Keyword.drop(opts, @valid_ring_opts)) ) diff --git a/test/hashring_managed_test.exs b/test/hashring_managed_test.exs index 47f8a10..cd32996 100644 --- a/test/hashring_managed_test.exs +++ b/test/hashring_managed_test.exs @@ -1,4 +1,11 @@ defmodule HashRing.ManagedTest do use ExUnit.Case, async: true doctest HashRing.Managed + + describe "child_spec" do + test "starts a ring", ctx do + name = String.to_atom("#{ctx.module}#{ctx.test}") + assert {:ok, _pid} = start_supervised({HashRing.Managed, [name: name]}) + end + end end