2017-10-11 5 views
1

Ich habe ein Problem mit dem Abrufen der Abhängigkeitsversion, die ich in einem der Projekte verwende, an denen ich arbeite. Ich möchte Version dieser Abhängigkeit in meinem Code abrufen. Gibt es einen einfachen Weg, das zu tun?Elixier - wie Bibliothek Version im Projekt dynamisch abrufen?

Ich habe versucht, folgende Methoden:

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

Aber wie ich in docs von Mix.dep.cached lesen kann dies ein leeres Array zurückgeben kann, wenn MIX_NO_DEPS eingestellt ist. Gibt es einen zuverlässigen Weg dies zu tun, außer eine Funktion in Abhängigkeit zu machen, die die Version von sich selbst zurückgibt?

Antwort

3

Sie können die Version der Abhängigkeit mit Application.spec/2 abrufen, wobei Sie den Namen der Abhängigkeit als erstes Argument und :vsn als zweites Argument übergeben.

Von Beispielanwendung des Ecto-Master:

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

Vielen Dank, löst dieses Problem, mein Problem schön :) –

Verwandte Themen