Я новичок в Elixir, пытаюсь использовать Nebulex для создания простого локального кэша (Panda.Cache).Я следовал его учебнику , но, наконец, выполнив следующие команды:
data = %{id: 1, text: "hello"}
Mycache.set(data[:id], data)
Я получаю эту ошибку:
** (ArgumentError) argument error
(stdlib) :ets.lookup_element(Panda.Cache, :metadata, 2)
(nebulex) lib/nebulex/adapters/local/metadata.ex:19: Nebulex.Adapters.Local.Metadata.get/1
(nebulex) lib/nebulex/adapters/local.ex:177: Nebulex.Adapters.Local.set/4
(panda) lib/panda/cache.ex:2: Panda.Cache.execute/2
Panda
- это имя моего эликсираapp и Panda.Cache
имя кэша, который я пытаюсь создать.
Буду признателен за любую помощь или решение.Заранее спасибо.
Обновление:
Папки и файлы проекта имеют вид:
panda
config
config.exs
lib
panda.ex
panda
application.ex
cache.ex
Файл config.exs:
use Mix.Config
config :panda, Panda.Cache,
adapter: Nebulex.Adapters.Local,
gc_interval: 86_400 # 24 hrs
кеш.ex файл:
defmodule Panda.Cache do
use Nebulex.Cache, otp_app: :panda
end
файл application.ex:
defmodule Panda.Application do
use Application
def start(_type, _args) do
import Supervisor.Spec
children = [
supervisor(Panda.Cache, [])
]
opts = [strategy: :one_for_one, name: Panda.Supervisor]
Supervisor.start_link(children, opts)
end
end
И как я пытался использовать кеш в своем коде:
defmodule Panda do
def mytest do
data = %{id: 1, text: "hello"}
Panda.Cache.set(data[:id], data)
end
end