使 elixir 应用程序重新编译并重新加载源代码更改
Make elixir app recompile and reload on source code change
如何在每次修改源代码时自动重新编译和重新加载我的 iex + mix 应用程序?
如果 iex + mix 组合没有办法做到这一点,最简单的选择是什么?查了phoenix的reload方法,我的小测试项目好像不太好实现。
我也知道何塞的 .iex.exs
:
defmodule R do
def reload! do
Mix.Task.reenable "compile.elixir"
Application.stop(Mix.Project.config[:app])
Mix.Task.run "compile.elixir"
Application.start(Mix.Project.config[:app], :permanent)
end
end
而且我不是很高兴,因为它不会在代码更改时自动重新加载,我仍然需要在 iex 上键入 R.reload!
。
还有..请帮我在 Whosebug 上创建 "iex" 标签,我的声誉不够:)
我所知道的最接近的是@tonini 的 Alchemist for emacs。
在 Alchemist 中,有一个选项可以启用
(setq alchemist-hooks-test-on-save t)
这使得它在您保存时编译并运行测试。
我想这就是您要找的:
https://github.com/AgilionApps/remix
对于 Erlang,我将 "relx -d" 与 https://github.com/rustyio/sync 一起使用。“-d”表示源文件使用符号链接进行链接。
在 Elixir 中同样有效。在 mix.exs 我在以下两个地方添加了 :sync
defp deps do
[{:sync, git: "https://github.com/rustyio/sync.git", tag: "master"}, ....
def application do
[applications: [:logger, :sync],
然后,下面的命令将它编译成一个版本(在它工作之前,你必须安装 hex 和 exrm)。
mix release -dev
现在,当你更改.ex文件并保存时,它会被重新编译并直接加载。
19:33:46.474 [info] ... /apps/testapp1/lib/kv/bucket.ex:0: Recompiled.
您只想在您的开发环境中进行同步!
目前iex
有一个内部函数可以做到这一点:
在 iex
控制台中调用 IEx.Helpers.recompile。
如何在每次修改源代码时自动重新编译和重新加载我的 iex + mix 应用程序?
如果 iex + mix 组合没有办法做到这一点,最简单的选择是什么?查了phoenix的reload方法,我的小测试项目好像不太好实现。
我也知道何塞的 .iex.exs
:
defmodule R do
def reload! do
Mix.Task.reenable "compile.elixir"
Application.stop(Mix.Project.config[:app])
Mix.Task.run "compile.elixir"
Application.start(Mix.Project.config[:app], :permanent)
end
end
而且我不是很高兴,因为它不会在代码更改时自动重新加载,我仍然需要在 iex 上键入 R.reload!
。
还有..请帮我在 Whosebug 上创建 "iex" 标签,我的声誉不够:)
我所知道的最接近的是@tonini 的 Alchemist for emacs。 在 Alchemist 中,有一个选项可以启用
(setq alchemist-hooks-test-on-save t)
这使得它在您保存时编译并运行测试。
我想这就是您要找的: https://github.com/AgilionApps/remix
对于 Erlang,我将 "relx -d" 与 https://github.com/rustyio/sync 一起使用。“-d”表示源文件使用符号链接进行链接。
在 Elixir 中同样有效。在 mix.exs 我在以下两个地方添加了 :sync
defp deps do
[{:sync, git: "https://github.com/rustyio/sync.git", tag: "master"}, ....
def application do
[applications: [:logger, :sync],
然后,下面的命令将它编译成一个版本(在它工作之前,你必须安装 hex 和 exrm)。
mix release -dev
现在,当你更改.ex文件并保存时,它会被重新编译并直接加载。
19:33:46.474 [info] ... /apps/testapp1/lib/kv/bucket.ex:0: Recompiled.
您只想在您的开发环境中进行同步!
目前iex
有一个内部函数可以做到这一点:
在 iex
控制台中调用 IEx.Helpers.recompile。