Ich bin neu zu Elixier und vor kurzem festgestellt, dass GenServer
ist eine gute Möglichkeit, Client/Server-API zu verwalten. Also habe ich versucht, ein GenServer-Modul zur Verwaltung der Datenbankverbindung zu erstellen, aber es ist fehlgeschlagen. Unten ist mein Code:Fehler beim Ausführen von Init-Methode bei Verwendung von GenServer
defmodule RedisClient do
use GenServer
require Logger
# Client
def start(url) do
GenServer.start(__MODULE__, {url})
end
def init({url}) do
Logger.info("connect to url #{url}");
case Redix.start_link(url) do
{:ok, conn} -> {conn}
{:error, err} -> {:error, err}
end
end
end
Das Modul RedisClient
verwendet wird, um eine redis Datenbank in seiner Methode init() zu verbinden. Aber es gibt unter Fehler:
iex([email protected])15> RedisClient.start("redis://localhost")
{:error, {:bad_return_value, {#PID<0.6623.0>}}}
iex([email protected])16>
17:58:20.592 [info] connect to url redis://localhost
nil
Ich verstehe nicht, warum es einen Fehler zurückgibt, und warum er druckt nil
am Ende. Es funktioniert gut, wenn es Redis
direkt wie unten nennen:
iex([email protected])17> Redix.start_link("redis://localhost")
{:ok, #PID<0.7443.0>}
Es scheint, dass der API-Aufruf auf Redix
kein Problem hat, so was falsch mit meiner GenServer Umsetzung?