2017-10-11 10 views
1

私が作業しているプロジェクトの1つで使用している依存関係のバージョンを取得する際に問題があります。私は自分のコードでこの依存関係のバージョンを取得したい。それを行う簡単な方法はありますか? エリクシール - プロジェクトで使用されているライブラリのバージョンを動的に取得する方法は?

Iは、以下の方法を試みた:

{:ok, dependency_version} = Mix.Dep.cached 
          |> Enum.filter(fn(d) -> d.app == :dependency_name end) 
          |> hd 
          |> Map.fetch!(:status) 

をしかし、私はMix.dep.cachedのドキュメントに読み込むことができるようにMIX_NO_DEPSが設定されている場合、これは空の配列を返すことができます。それ自身のバージョンを返す依存関係の関数を作ることとは別にそれを行うための信頼できる方法はありますか?

答えて

3

Application.spec/2を使用して依存関係のバージョンを取得し、第1引数として依存関係の名前を渡し、第2引数として:vsnを渡すことができます。エクトマスターのサンプルアプリケーションから

$ iex -S mix 
iex(1)> Application.spec(:ecto, :vsn) 
'3.0.0-dev' 
iex(2)> Application.spec(:postgrex, :vsn) 
'0.14.0-dev' 
+0

が、これがうまく私の問題を解決して、どうもありがとうございました:) –

関連する問題