Ich verwende Datomic in mehreren Projekten und es ist Zeit, den gesamten Code in eine kleine Utilities-Bibliothek zu verschieben.Wie behandelt man eine Variable in einer Bibliothek, die außerhalb davon gesetzt werden muss?
Eine Herausforderung besteht darin, mit einer gemeinsamen Datenbank uri
umzugehen, von der die meisten Operationen abhängen, die jedoch vom Projekt mithilfe der Bibliothek festgelegt werden muss. Ich frage mich, ob es einen gut etablierten Weg dafür gibt. Hier sind einige Alternativen dachte ich habe über:
Dropping
uri
Symbol in der Bibliothek und das Hinzufügen der uri als Argument für jede Funktion, die auf die Datenbank zugreiftes über
alter-var-root
zu ändern oder ähnlich Mechanismus, in einer Funktion inites in der Bibliothek als ein dynamisches var
Keeping*uri*
und überschreibt den Wert in einer hoffentlich kleinen Adapterschicht wie(def my-url ... bla ...)
(my-fun [args] (mit-datomic-uri my-uri (gilt Bibliothek/my-Spaß args)) DEFN
Keeping
uri
als ein Atom in der Bibliothek
Erwarten Sie, dass Benutzer die URI zur Laufzeit ändern möchten, oder muss sie nur einmal für ein bestimmtes Projekt definiert werden? –
Nicht zur Laufzeit, @OmriBernstein. Es gibt eine Datenbank für Tests und eine für die Produktion. – konr