gpt4 book ai didi

elixir - 在 Elixir 1.12 应用程序中启动 `:pg` 的默认范围的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-04 07:30:37 24 4
gpt4 key购买 nike

:pg2 模块在 OTP 24 中被删除。它的替代品是 :pg。根据documentation :

Default scope pg is started automatically when kernel(6) is configured to do so.

在基于混合的 Elixir 1.12 应用程序中,配置内核以自动启动默认 :pg 作用域的正确方法是什么?到目前为止,我一直在这样做,但看起来真的很 hack-y 使得编写没有 start/2 函数的库代码是不可能的:

defmodule MyApp do
use Application

def start(_type, _args) do

# Ew, gross:
{:ok, _pid} = :pg.start_link()

children() |> Supervisor.start_link([strategy: :one_for_one, name: __MODULE__])
end

def children, do: []
end

最佳答案

你可以自己写child_spec对于该模块:

defmodule MyApp do
use Application

def start(_type, _args) do
Supervisor.start_link(children(), strategy: :one_for_one, name: __MODULE__)
end

defp children, do: [pg_spec()]

defp pg_spec do
%{
id: :pg,
start: {:pg, :start_link, []}
}
end
end

关于elixir - 在 Elixir 1.12 应用程序中启动 `:pg` 的默认范围的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67957826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com