Attualmente sto cercando di creare un atomo per una connessione di database a Redis. Di solito userei l'opzione name
in start
di GenServer
, ma non è disponibile. Nella Guida introduttiva (Elixir 1.0.5), l'esempio sembra mostrare Process.register(pid, :kv)
come opzione. Forse c'è un'opzione migliore per rendere questo processo accessibile?Process.register Non si applica ad Atom
Di seguito viene mostrato come non corrisponde la guardia nella query per il client di connessione.
iex(2)> redis_client = Exredis.start
#PID<0.367.0>
iex(3)> Process.register(redis_client, :redis_client)
true
iex(4)> :redis_client |> Exredis.query ["GET", "test"]
** (FunctionClauseError) no function clause matching in Exredis.query/2
(exredis) lib/exredis.ex:95: Exredis.query(:redis_client, ["GET", "test"])
iex(4)> redis_client |> Exredis.query ["GET", "test"]
:undefined
iex(5)> redis_client |> Exredis.query ["SET", "test", "value"]
"OK"
iex(6)> redis_client |> Exredis.query ["GET", "test"]
"value"
iex(7)> :redis_client
:redis_client
Grazie whatyouhide =). Ho pensato che quando è stato registrato, sarebbe process_id/process, e non un nome del processo. – rockerBOO
Qualcuno dovrebbe probabilmente aprire un problema su ExRedis, non dovrebbero limitarlo davvero ai pid. –