Могу ли я заставить tools.namespace обновлять пространство имен независимо от того, изменилось ли оно? - PullRequest
0 голосов
/ 30 января 2019

Вот почему я хочу: я использую библиотеку HugSQL , в которой есть макрос def-db-fns, который называется так: (hugsql/def-db-fns "sql/queries.sql")

В основном, это выглядит наФайл sql и использует его для определения функций в пространстве имен, из которого вызывается макрос.Но проблема в том, что если я изменю queries.sql, то tools.namespace не обновит пространство имен, потому что само пространство имен не изменилось.Поэтому мне интересно, есть ли какой-нибудь способ заставить tools.namespace всегда обновлять определенное пространство имен или же каким-либо образом связывать queries.sql как зависимость, чтобы пространство имен обновлялось при его изменении.

edit: Пока чтолучшее решение, которое я придумал, это:

(ns user
  (require [clojure.java.shell :refer [sh]]
           [clojure.tools.namespace.repl :as tns]))

(defn refresh []
  (sh "touch" "src/project_name/queries.clj")
  (tns/refresh))

1 Ответ

0 голосов
/ 30 января 2019

Вы можете использовать refresh-all вместо refresh: оно обновляет все пространства имен независимо от того, когда они изменились.

Я не нашел ничего в документах относительно маркировки определенногоПространство имен как «всегда перезагружаться».


Вы могли бы взломать это, touch используя файл для установки даты его изменения в будущем, так что он всегда будет «изменен»после последней refresh проверки, но она будет сброшена, если вы самостоятельно отредактируете файл и / или сломаете другие инструменты, которые следят за изменениями:

# set the modified date in the year 3000
touch -m -t 300001010101 queries.clj
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...