2017-03-26 3 views
0

Ich aktualisiere meine @ doc während iex> um zu testen, wie es aussieht. Das Problem, auf das ich stoße, ist, dass ich iex beenden muss, um die aktualisierte Dokumentation von @doc zu sehen. Gibt es eine Möglichkeit, die Module @ doc Variablen bei der Verwendung von r() neu zu laden?r (Modulname) nicht neu laden @doc in iex

iex -S mix 
iex> h Coordinate.island/1 
     ## Examples 
     iex> {:ok, coord } = Cordinate.start_link 
     Cordinate.island(coord) 
     :falls_town 

Aktualisiert @doc zurück: none anstelle von: fall_town und Datei speichern.

iex> r(Coordinate) 
iex> h Coordinate.island/1 
    # issue: still showing the old @doc example 
    ## Examples 
    iex> {:ok, coord } = Cordinate.start_link 
     Cordinate.island(coord) 
     :falls_town # should be :none 
+2

Versuchen Sie 'recompile()' anstelle von 'r (...)' in 'iex -S mix' auszuführen. – Dogbert

+0

@Dogbert, das hat viel geholfen! Um doc-Variablen neu zu laden, müssen Sie die aktuelle Mix-Anwendung neu kompilieren. –

Antwort

5

h/1 currently loads the documentation from the compiled .beam files. r/1 kompiliert die Dateien im Speicher und schreibt nicht die .beam Dateien auf der Festplatte, was bedeutet, dass h/1 nicht die Dokumentation nicht neu zu laden, wenn Sie r/1 laufen:

Wenn wir das Modul in IEx neu zu laden, wir die Modul Quelle neu kompilieren Code, aktualisiert seinen Inhalt im Speicher. Die ursprüngliche .beam-Datei in der Festplatte, wahrscheinlich die, wo die erste Definition des Moduls kam, ändert sich überhaupt nicht.

Source

Sie können das Paket zusammenstellen und die daraus resultierenden .beam Dateien auf die Festplatte schreiben, indem recompile/0 in iex (statt r/1) ausgeführt wird. Nachdem Sie das ausgeführt haben, sollten Sie die neue Dokumentation in h/1 sehen.