Ich schreibe eine Elixir-Bibliothek, deren Verhalten weitgehend von einer vom Benutzer bereitgestellten Wörterbuchdatei abhängt. Ich bearbeite die Datei während der Kompilierung, wie folgt aus:Wie kann ich meinen Bibliothekscode neu kompilieren, wenn sich die Anwendungsumgebung ändert?
defmodule SomeModule do
@dictionary Application.get_env(:some_lib, :dictionary_file)
|> do_some_processing
...
end
Ein übergeordnetes Projekt angeben können ihre die Wörterbuch-Datei verwenden config.exs
:
config :some_lib, dictionary_file: "/path/to/dictionary.txt"
Wenn das übergeordnete Projekt des Besitzers ihre config.exs
ändert ein angeben anders dictionary_file
, mein Modul muss neu kompiliert werden. Dies geschieht jedoch nicht automatisch, wenn ich mix deps.compile --force
im übergeordneten Projekt ausführe.
Elixir liefert @external_resource
um auszudrücken "rekompilieren Sie meinen Code, wenn eine bestimmte externe Datei ändert". Aber ich sehe keine Möglichkeit zu sagen "kompiliere meinen Code neu, wenn sich die Anwendungsumgebung ändert".
Wie kann ich das tun?
Ich sollte beachten - ich habe nur meine Bibliothek als eine lokale Abhängigkeit bisher versucht. Ich bin mir nicht sicher, ob das das Verhalten von 'mix deps.compile' beeinflusst. –