Clojure:即使数据库不可用,如何启动应用程序?

Clojure: How to start application even if database is not available?

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

我试图禁用错误消息,希望 db 会有 'value' nil

(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*))

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

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

在上面的问题中,我试图在错误的文件中解决我的问题。 对我有用的方法是在 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)))

为了让我的应用程序万无一失,我应该将此验证更改为: 如果数据库不可用,则配置文件必须可用。

不过这暂时解决了我的问题。 :-)