2017-04-21 97 views
0

我正在构建一个项目,该项目将作为多个其他项目的核心,有点像Ruby世界中的Rails引擎。我如何运行依赖关系的ecto迁移?

我已经在我的核心项目中实现了一些基础数据库结构,基本上是在整个板上共享的结构。

我的问题是,我的项目,使用我的核心,没有注册核心项目的迁移。

有什么办法可以运行我的核心依赖关系的迁移?

让我知道你是否需要更多信息。 :-)

谢谢

+0

如果这是一个伞式应用程序,我只需将'cd'放入核心项目并运行迁移。您也可以将核心项目的迁移复制到您需要的每个项目中。可能需要创建一个混合任务来执行此操作。 –

+0

您能否介绍一些关于您的项目结构的更多信息?具体来说,你如何处理你的依赖关系?你使用一个伞应用程序,还是他们分开包装作为代表? –

+0

不,这不是一个伞应用程序,我只是在我的混合文件中添加依赖项,这是从git中获取的。我认为制作Umbrella应用程序并不合理,因为要使用核心项目的项目并未以任何方式连接。 :) – MartinElvar

回答

1

您应该能够使用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