0
저는 elixir에 익숙하지 않고 최근에 클라이언트/서버 API를 관리하는 좋은 방법이라고 생각합니다. 그래서 데이터베이스 연결을 관리하기 위해 GenServer 모듈을 만들려고했지만 실패했습니다.GenServer를 사용하여 init 메소드를 실행하지 못했습니다.
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
모듈 RedisClient
가 초기화() 메소드의 레디 스 데이터베이스에 연결하는 데 사용되는 : 다음은 내 코드입니다. 그러나 그것은 오류 아래 반환이 말에 nil
을 인쇄 왜 오류를 반환하고 왜 이해가 안
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
.
iex([email protected])17> Redix.start_link("redis://localhost")
{:ok, #PID<0.7443.0>}
Redix
의 API 호출이 아무 문제가없는 것 같다, 그래서 내 GenServer 구현에 어떤 문제가 : 나는 다음과 같이 직접 Redis
를 호출하는 경우 그것은 잘 작동? 또는 당신이 정확히 Redix.start_link
수익률을 반환하고 있기 때문에, 당신은 단순히 그것을 반환 할 수
{:ok, conn} -> {:ok, conn}
을 :