0
我正在构建一个项目,该项目将作为多个其他项目的核心,有点像Ruby世界中的Rails引擎。我如何运行依赖关系的ecto迁移?
我已经在我的核心项目中实现了一些基础数据库结构,基本上是在整个板上共享的结构。
我的问题是,我的项目,使用我的核心,没有注册核心项目的迁移。
有什么办法可以运行我的核心依赖关系的迁移?
让我知道你是否需要更多信息。 :-)
谢谢
我正在构建一个项目,该项目将作为多个其他项目的核心,有点像Ruby世界中的Rails引擎。我如何运行依赖关系的ecto迁移?
我已经在我的核心项目中实现了一些基础数据库结构,基本上是在整个板上共享的结构。
我的问题是,我的项目,使用我的核心,没有注册核心项目的迁移。
有什么办法可以运行我的核心依赖关系的迁移?
让我知道你是否需要更多信息。 :-)
谢谢
您应该能够使用Ecto.Migrator
模块中的自定义任务。 有关更详细的解释,请参阅running-migration-in-an-exrm-release。
defmodule Release.Tasks do
def migrate do
{:ok, _} = Application.ensure_all_started(:my_dependency)
path = Application.app_dir(:my_dependency, "priv/repo/migrations")
Ecto.Migrator.run(MyApp.Repo, path, :up, all: true)
:init.stop()
end
end
如果这是一个伞式应用程序,我只需将'cd'放入核心项目并运行迁移。您也可以将核心项目的迁移复制到您需要的每个项目中。可能需要创建一个混合任务来执行此操作。 –
您能否介绍一些关于您的项目结构的更多信息?具体来说,你如何处理你的依赖关系?你使用一个伞应用程序,还是他们分开包装作为代表? –
不,这不是一个伞应用程序,我只是在我的混合文件中添加依赖项,这是从git中获取的。我认为制作Umbrella应用程序并不合理,因为要使用核心项目的项目并未以任何方式连接。 :) – MartinElvar