【发布时间】:2019-06-20 14:51:35
【问题描述】:
如何重新编译和重新加载 IEx(杀死所有进程)。当我退出控制台并再次启动它但不离开 IEx 时,我要达到的是相同的行为。
我在函数中做
IEx.Helpers.recompile()
Process.exit self, :kill
但我收到红色消息:(EXIT from #PID) shell process exited with reason:killed 这很烦人。
【问题讨论】:
-
不确定你想要实现什么,但如果你使用像 Sugar 这样的框架,你可以使用 hot-code-reload(查看代码示例:sugar-framework.github.io/getting-started/…),很确定 Phoenix 支持它也;然后,您的进程就会失败,并在检测到新来源时重新启动。
-
我在测试期间从控制台手动运行了许多机器人。它们是 GenStages,可以相互通信和其他 Web 服务,我不使用 Phoenix。我做了代码更改,并希望在某些情况下从头开始测试。
-
但是如果你重新编译,杀掉一切,销毁所有状态,不重启iex有什么好处呢?
-
顺便说一句,简单的解决方法是在一个共同的主管下启动您的进程,然后使用该主管杀死/重新启动进程
-
谢谢你,dualed,我会考虑普通的主管,可能对我不需要关闭所有进程的一些情况有用。该值是为了方便在一个短命令中执行,例如“re”,无需按两次Ctrl-C退出然后运行解释器。
标签: elixir