【问题标题】:Make elixir app recompile and reload on source code change使 elixir 应用程序在源代码更改时重新编译和重新加载
【发布时间】:2015-12-09 00:46:33
【问题描述】:

如何在每次修改源代码时自动重新编译和重新加载我的 iex + mix 应用程序?

如果 iex + mix 组合无法做到这一点,那么最简单的选择是什么?我检查了phoenix的reload方式,对于我的小测试项目来说实现起来似乎并不容易。

我也知道 José 的.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!

还有..请帮我在stackoverflow上创建“iex”标签,我的名声不够:)

【问题讨论】:

  • 我想我们在 elixir-lang-talk 邮件列表上对此进行了一些讨论。我认为甚至一些开源项目都是从中产生的……或者是为了混合 test.watch?
  • 啊...是的,github上有几个项目,我会测试它们是否有效。

标签: elixir elixir-mix elixir-iex


【解决方案1】:

我所知道的最接近的事情是@tonini 的 emacs 炼金术士。 在 Alchemist 中,有一个选项可以启用

(setq alchemist-hooks-test-on-save t)

这使它在您保存时编译并运行测试。

https://github.com/tonini/alchemist.el#testing

【讨论】:

    【解决方案2】:

    我认为这就是您要寻找的: https://github.com/AgilionApps/remix

    【讨论】:

      【解决方案3】:

      对于 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.
      

      您只想在您的开发环境中同步!

      【讨论】:

      • 我不认为这可以正常工作,因为:github.com/rustyio/sync/issues/56
      • @Michael Terry 是的,同样的问题。
      • 这对长生不老药始终无效。无限循环狂热。
      【解决方案4】:

      目前iex 有一个内部函数可以做到这一点:

      iex 控制台内调用IEx.Helpers.recompile

      【讨论】:

      • 你不需要输入完全限定的命令IEx.Helpers.recompile,只需运行recompile就足够了
      猜你喜欢
      • 2014-08-29
      • 2014-06-17
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 2013-04-27
      • 1970-01-01
      • 2014-05-03
      相关资源
      最近更新 更多