此前代码放在一个repo下, 代码重用的方式是umbrella. 为了将代码拆分, 让服务间的边界更明显, 咱们将elixir project拆分开, 以deps方式重用代码. 遇到了deps编译时默认env为prod问题.git
发现部分单元测试失效, 后面定位到, 相似以下的代码, 所有失效.shell
if Mix.env != :prod do xxxx end
参考
https://stackoverflow.com/que...
修改mix.exs, 让构建deps时, 使用当前的Mix.env.ubuntu
def project do [ ... deps: deps(Mix.env()), ] end defp deps(env) do [ {:ejoy_amqp, git: "https://xxx.git", env: env}, {:ejoy_utils, git: "https://xxx.git", env: env}, ] end
~ » which mix enjolras@ubuntu /usr/local/bin/mix ------------------------------------------------------------ ~ » cat /usr/local/bin/mix enjolras@ubuntu #!/usr/bin/env elixir Mix.start Mix.CLI.main
use Application @doc false def start do {:ok, _} = Application.ensure_all_started(:mix) :ok end
能够看到mix是自举的, mix也有mix.exs file.
elixir_src/lib/mix/mix.exsapp
defmodule Mix.MixProject do use Mix.Project def project do [ app: :mix, build_per_environment: false, version: System.version(), escript: [main_module: Mix.CLI] ] end def application do [ registered: [Mix.State, Mix.TasksServer, Mix.ProjectStack], mod: {Mix, []}, env: [colors: []] ] end end