1 defmodule Pleroma.Config.TransferTask do
3 alias Pleroma.Web.AdminAPI.Config
7 if Pleroma.Config.get(:env) == :test, do: Ecto.Adapters.SQL.Sandbox.checkin(Pleroma.Repo)
11 def load_and_update_env do
12 if Pleroma.Config.get([:instance, :dynamic_configuration]) and
13 Ecto.Adapters.SQL.table_exists?(Pleroma.Repo, "config") do
15 Pleroma.Repo.all(Config)
16 |> Enum.map(&update_env(&1))
18 # We need to restart applications for loaded settings take effect
20 |> Enum.reject(&(&1 in [:pleroma, :ok]))
21 |> Enum.each(fn app ->
23 :ok = Application.start(app)
28 defp update_env(setting) do
31 if String.starts_with?(setting.key, "Pleroma.") do
32 "Elixir." <> setting.key
37 group = String.to_existing_atom(setting.group)
41 String.to_existing_atom(key),
42 Config.from_binary(setting.value)
51 "updating env causes error, key: #{inspect(setting.key)}, error: #{inspect(e)}"