gpt4 book ai didi

elixir - 在 umbrella 应用程序中运行 mix ecto seeds 文件

转载 作者:行者123 更新时间:2023-12-04 17:52:27 24 4
gpt4 key购买 nike

许多 Ecto 混合任务在 umbrella 应用程序的顶层工作。 seeds.exs 文件可以在伞顶层运行吗?我想将 mix ecto.reset 别名添加到伞。我可以运行 dropcreatemigrate 任务。但是我不知道如何运行每个应用程序的种子文件。

我想了解其他人是如何解决这个问题的。

最佳答案

我知道这个帖子已经过时了,但我今天早些时候需要这样做,并提出了一个小的解决方案,可以帮助其他人解决同样的问题。

@Mike Buhot 的回答很好,但我不想创建任务或模块,而且我还想使用顶级 priv 文件夹中的 seeds.exs 文件。只需将以下代码片段添加到您的顶级 seeds.exs 中,它就会运行您的伞式应用程序中可能拥有的所有种子。

umbrella_directory = "./apps/"
seeds_path = "/priv/repo/seeds.exs"

umbrella_directory
|> File.ls!()
|> Enum.filter(&File.dir?(Path.join(umbrella_directory, &1)))
|> Enum.each(fn(directory) ->
app_seeds = Path.join([umbrella_directory, directory, seeds_path])
case File.exists?(app_seeds) do
true -> Mix.Tasks.Run.run([app_seeds])
_ -> :ok
end
end)

然后运行 ​​$ mix run priv/repo/seeds.exs 就可以了。

关于elixir - 在 umbrella 应用程序中运行 mix ecto seeds 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43566812/

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