0

我想创建一个可以使用数据库或配置文件来检索信息的 Clojure 应用程序。

我试图禁用错误消息,希望db的“值”为零

(defstate ^:dynamic *db*
  :start (when-let [jdbc-url (env :database-url)]
           (conman/connect! {:jdbc-url jdbc-url})
           ; (do
             ; (log/warn "database connection URL was not found, please set :database-url in your config, e.g: dev-config.edn")
             ; *db*)
             )
  :stop (conman/disconnect! *db*))

我只想创建一个应用程序,我可以从中检索测试环境中应用程序的名称、版本和……。并非所有这些应用程序都有可用的数据库,我们可以在其中添加这些信息的表。因此,我想将此信息存储在配置文件中。通过这种方式,我可以将这个小应用程序作为 API 部署在每个应用程序旁边,并使用另一个应用程序调用这些 API 并在 SVG 中创建组件图。

问题:如果数据库不可用,我应该怎么做才能启动这个应用程序?

4

1 回答 1

1

在上面的问题中,我试图在错误的文件中解决我的问题。对我有用的方法是禁用 core.clj 中 -main 中的第一个条件。

(defn -main [& args]
  (mount/start #'version-api2.config/env)
  (cond
    ; (nil? (:database-url env))
    ; (do
      ; (log/error "Database configuration not found, :database-url environment variable must be set before running")
      ; (System/exit 1))
    (some #{"init"} args)
    (do
      (migrations/init (select-keys env [:database-url :init-script]))
      (System/exit 0))
    (migrations/migration? args)
    (do
      (migrations/migrate args (select-keys env [:database-url]))
      (System/exit 0))
    :else
    (start-app args)))

为了让我的应用程序万无一失,我应该将此验证更改为:IF db not available THEN config file must be available。

但是,这暂时解决了我的问题。:-)

于 2019-10-09T11:48:58.883 回答