Sagen wir, ich habe ein Modul im Ordner "lib" in meiner Phoenix App erstellt. Wie kann ich von einem Controller darauf zugreifen? Muss ich es zuerst laden? Oder einfach Alias? Oder erst beim Booten und dann beim Alias?Wie bekomme ich Zugriff darauf ein Modul im Ordner "/ lib" in Phoenix?
3
A
Antwort
2
Alle Module in allen .ex
(nicht .exs
) Dateien in lib
in .beam
Dateien kompiliert, wenn Sie mix compile
in _build/dev/lib/my_app/ebin
ausführen, wo dev
die Mischung env und my_app
ist der Name der App. Wenn Sie versuchen, eine Funktion auf einem noch nicht geladenen Modul aufzurufen, sucht die Erlang-VM in allen "Codelastpfaden" (die bereits _build/dev/lib/my_app/ebin
enthält) nach einer entsprechenden .beam
-Datei und lädt sie, bevor sie die Funktion ausführt . Wenn es keinen findet, erhalten Sie einen Modul nicht verfügbar Fehler.
Sie müssen es also nicht laden. Rufen Sie einfach die Funktion und optional Alias auf, wenn Sie möchten.
Verwenden Sie den üblichen Weg: 'MyApp.MyModule.some_func()', können Sie es alias oder importieren oder was auch immer. – JustMichael