我有一个灵丹妙药应用,当我更新应用配置时,例如更改端口,然后再次运行我的应用程序,我没有看到任何差异。似乎应用程序仍然可以使用配置上的旧版本。我必须修改应用程序代码(例如添加一些毫无意义的行:IO.put(" foo"))并且只有在此之后,应用程序才运行新版本的配置。实现相同结果的真正方法是什么?
答案 0 :(得分:1)
我无法重现此行为,可能是由于最近的mix
版本。下面是盲目猜测可能导致它的原因以及如何克服它。
Elixir中的.exs
个文件和.ex
文件之间存在显着差异。前者是所谓的“Elixir脚本”,后者是要编译的通用Elixir文件。
run
任务之前, mix
工具正在寻找要编译的文件中的 。
由于.exs
文件被视为脚本,mix
不认为项目已更改并需要重新编译。幸运的是,run
任务接受--config
命令行选项,允许显式指定要使用的配置文件。当明确指定config时,它将被强制重新加载,新值将明确生效。
答案 1 :(得分:1)
混合应该recompile the project if you change any file inside "config"。
我的猜测是你可能正在调用一个不要求你的项目编译的自定义任务。每个Mix任务都有责任说出他们期望应用程序处于哪种状态:编译,加载等等。