umbrella 프로젝트에서 발생한 deps 컴파일env를 프로젝트로 나누기

1973 단어 elixir

문제.


이전 코드는 하나의 리포 아래에 두었고 코드를 다시 사용하는 방식은umbrella.코드를 분리하여 서비스 간의 경계를 더욱 뚜렷하게 하기 위해서, 우리는 elixir 프로젝트를 분리하여 deps 방식으로 코드를 다시 사용합니다.deps를 컴파일할 때 기본으로 env가prod 문제입니다.

자세한 사정


일부 단원 테스트가 효력을 잃은 것을 발견하고 뒤에 다음과 같은 코드가 위치하여 모두 효력을 잃었다.
  if Mix.env != :prod do
    xxxx
  end

해결하다


참고 자료https://stackoverflow.com/que...mix 수정.exs, deps를 구축할 때 현재 믹스를 사용합니다.env.
  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

의 원리


mix는 응용 프로그램입니다.


mix shell

~ » which mix                                                                                                                                                                               enjolras@ubuntu
/usr/local/bin/mix
------------------------------------------------------------
~ » cat /usr/local/bin/mix                                                                                                                                                                  enjolras@ubuntu
#!/usr/bin/env elixir
Mix.start
Mix.CLI.main

mix.ex

  use Application

  @doc false
  def start do
    {:ok, _} = Application.ensure_all_started(:mix)
    :ok
  end

믹스는 자진하는 것을 볼 수 있고, 믹스도 믹스가 있다.exs file.elixir_src/lib/mix/mix.exs
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

project.ex

좋은 웹페이지 즐겨찾기