I’m attempting to add quantum to a phx.new
project and encountering the following compiler error:
== Compilation error in file lib/quantum_phoenix/scheduler.ex ==
** (CompileError) lib/quantum_phoenix/scheduler.ex:2: Crontab.CronExpression.__struct__/0 is undefined, cannot expand struct Crontab.Cr
onExpression
(stdlib) lists.erl:1354: :lists.mapfoldl/3
lib/quantum_phoenix/scheduler.ex:2: (module)
(stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
(elixir) lib/kernel/parallel_compiler.ex:198: anonymous fn/4 in Kernel.ParallelCompiler.spawn_workers/6
My application (lib/quantum_phoenix/application.ex
):
defmodule QuantumPhoenix.Application do
use Application
def start(_type, _args) do
import Supervisor.Spec
children = [
supervisor(QuantumPhoenix.Repo, []),
supervisor(QuantumPhoenixWeb.Endpoint, []),
worker(QuantumPhoenix.Scheduler, []),
]
opts = [strategy: :one_for_one, name: QuantumPhoenix.Supervisor]
Supervisor.start_link(children, opts)
end
def config_change(changed, _new, removed) do
QuantumPhoenixWeb.Endpoint.config_change(changed, removed)
:ok
end
end
My quantum scheduler (lib/quantum_phoenix/scheduler.ex
):
defmodule QuantumPhoenix.Scheduler do
use Quantum.Scheduler, otp_app: :quantum_phoenix
end
And my config/dev.exs
:
# ... all the phx.new defaults
config :quantum_phoenix, QuantumPhoenix.Scheduler,
jobs: [
phoenix_job: [
schedule: "*/2 * * * *",
task: {QuantumPhoenix.Task, :work, []},
]
]
I am using Phoenix 1.3.0
and elixir 1.6.1
/OTP 20
.
From what I understand (which is not much since i’m new to Elixir and Phoenix), this error typically involves trying to reference a namespaced module without specifying the full namespace. I can’t find anywhere in my own code where I’m incorrectly namespacing things so my assumption is that this is an issue how my phoenix project is interacting with Quantum. I have a similar setup in an on Phoenix project that compiles just fine.