提问人:Michael Johnston 提问时间:11/3/2023 最后编辑:Michael Johnston 更新时间:11/3/2023 访问量:32
如何在具有断点的应用上下文中运行本地安装的混合任务?
How can I run a locally installed mix task in the context of an app with a breakpoint?
问:
我想在我的应用程序的上下文中运行本地安装的混合任务(我的意思是从另一个项目安装的任务),但首先设置一个断点。mix archive.build; mix archive.install
如果我运行 ,那工作正常。当然,当我在会话中时,任务已经运行了。iex -S mix locally.installed.task
iex
如果我随后可以在设置断点后再次运行它,那就太好了,如下所示:
break! Mix.Tasks.Locally.Installed.Task.run/1 #=> 1
Mix.Task.run("locally.installed.task", args) #=> :noop
但是,这只为我本地安装的任务返回,尽管它适用于应用程序中定义的任务或默认的全局任务,例如 .:noop
mix deps
为什么返回“本地安装”任务?Mix.Task.run
:noop
有没有办法在先设置断点的同时使用 IEX 运行混合任务?
编辑:混合制作任务是幂等的。即,如果我这样做,然后运行,我也会得到 iex -S mixMix.Task.run:noop':noop
iex -S mix deps
Mix.Tasks.run("deps", [])
:noop, or if I run any given task in an
session with
it will only run once and subsequent invocations return
有一个有效的...Mix.Task.rerun/2
答:
2赞
Aleksei Matiushkin
11/3/2023
#1
正如文档中所说,应该使用 https://hexdocs.pm/mix/Mix.Task.html#reenable/1 显式重新启用任务。
rerun/1
也会起作用。
评论
1赞
Michael Johnston
11/4/2023
reenable
工程。我还发现,如果我启动时,已安装的混音项目中的所有代码都会加载,我可以在该任务或库中的任何位置设置断点,然后调用iex
iex -S mix help locally.installed.task
Mix.Task.run...
评论