我正在尝试将库配置设置为指向priv
中的文件路径(geoip db):'
config :geolix, databases: [
%{
id: :city,
adapter: Geolix.Adapter.MMDB2,
source: Application.app_dir(:zipbooks, "priv") |> Path.join("data/GeoLite2-City.mmdb")
}
]
但我的
config :zipbooks, …
位于顶部的同一文件中。我收到这个错误:
** (Mix.Config.LoadError) could not load config config/config.exs
** (ArgumentError) unknown application: :zipbooks
我使用版本,因此我无法对priv
路径进行硬编码,因为它的相对位置会发生变化。我过去曾经可靠地使用过Application.app_dir(:zipbooks, "priv")
所以我很想知道如何在config.exs中实现这个目标
答案 0 :(得分:3)
我猜这是不可能的。所以我最终做的是:
def start(_type, _args) do
# See http://elixir-lang.org/docs/stable/elixir/Supervisor.html
# for other strategies and supported options
opts = [strategy: :one_for_one, name: ZB.Supervisor]
Application.get_env(:zipbooks, :env)
|> children
|> Supervisor.start_link(opts)
|> after_start
end
defp after_start({:ok, _} = result) do
Geolix.load_database(%{
id: :city,
adapter: Geolix.Adapter.MMDB2,
source: Application.app_dir(:zipbooks, "priv") |> Path.join("data/GeoLite2-City.mmdb")
})
result
end
defp after_start(result), do: result
答案 1 :(得分:0)
我最终在config.ex中使用以下命令。到目前为止,在我看来,对我来说还算不错。
config :zippy, :assets_folder, Path.join(Path.dirname(__DIR__), "priv/assets")
在以下位置找到了此解决方案:https://groups.google.com/forum/#!topic/phoenix-talk/teaQI8fzHuQ