Новое в эликсир, и я отслеживаю вместе с пост Хосе валим в https://howistart.org/posts/elixir/1Elixir Кураторы: invalid_child_spec
У меня возникают проблемы, имеющий супервизора, чтобы начать ребенка, как я получаю сообщение об ошибке:
iex(1)> Portal.shoot(:orange) {:error, {:invalid_child_spec, [:orange]}}
Помощь была бы принята с благодарностью!
Вот модуль портала
defmodule Portal do
use Application
def start(_type, _args) do
import Supervisor.Spec, warn: false
children = [
worker(Portal.Door, [])
]
opts = [strategy: :simple_one_for_one, name: Portal.Supervisor]
Supervisor.start_link(children, opts)
end
@doc """
Shoots a new door with the given `color`
"""
def shoot(color) do
Supervisor.start_child(Portal.Supervisor, [color])
end
Вот модуль Portal.Door и функция start_link, которая должна быть вызвана получать
defmodule Portal.Door do
def start_link(color) do
Agent.start_link(fn -> [] end, name: color)
end
Ваш код работает для меня. Вы уверены, что это точный код, который показывает эту ошибку? – Dogbert
Да. Это была прямая копия от моего редактора. У меня есть другие функции в файлах (также из учебника), но они не должны иметь никакого эффекта, поскольку они не вызываются. @Dogbert было бы полезно увидеть все файлы .ex. – dhuenecke
Да. Не могли бы вы сначала скопировать код в вопрос, добавить 2 недостающих 'end' и посмотреть, работает ли он? Я скопировал это и добавил 2 недостающих «конца», и это сработало для меня вчера. – Dogbert