在Elixir / Mix / Phoenix应用程序中放置服务/初始化代码的位置?

时间:2017-04-11 15:35:58

标签: elixir phoenix-framework

我有一个Elixir / Mix应用程序(也有凤凰城,但也有很多非凤凰城的东西),而且我想知道什么是最佳实践,以便进入"启动"代码,例如动态地将孩子添加到主管,解雇"我活着!" ping或其他你希望在启动后立即发生的事情。

一个显而易见的地方是j文件,但预期的返回是Application的返回。所以,例如,在Phoenix应用程序中,我可以这样做:

Supervisor.start_link(children, opts)

这似乎不对,但我无法弄清楚我应该把这段代码放在哪里。

1 个答案:

答案 0 :(得分:2)

完全没问题。你凤凰应用程序只是一个OTP应用程序,你可以随心所欲地射击自己的脚。 Application.start只需要一个{:ok, pid}元组,它基本上就是应用程序的顶级进程。

我通常首先放置自定义启动代码,然后设置主管理程序规范并启动该管理程序 - 请注意,如果您在启动“动态管理程序”和添加应用程序之间有顺序依赖关系,就好像是这样的情况上面,你可能会因为时间问题而失败 - 我会在规范中正确配置该主管,以便它可以在其init回调中执行操作,但我不知道您的代码或您的要求。

无论如何,只要您遵守合同,Application.start就是您的全部: - )