0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ひとりカレンダー】ClojureAdvent Calendar 2024

Day 22

Clojure: DuctでRSSリーダーを作る - 環境変数

Last updated at Posted at 2024-12-21

advent_calendar_2024.png

Advent Calendar 2024 Day 22

昨日は以下のようにDB接続を設定しました。

config.edn
  :duct.database.sql/hikaricp
  {:adapter "postgresql"
   :server-name "localhost"
   :port-number "5432"
   :username "user"
   :password "password"
   :database-name "feed"}

今日は環境変数から読み込めるようにします

環境変数に置き換える

とはいってもやることは簡単です

config.edn
  :duct.database.sql/hikaricp
  {:adapter "postgresql"
   :server-name #duct/env "DB_HOST"
   :port-number #duct/env "DB_PORT"
   :username #duct/env "DB_USER"
   :password #duct/env "DB_PASS"
   :database-name #duct/env "DB_NAME"}

#duct/env "変数名"で環境変数を参照できます

試しに起動します

$ DB_HOST=localhost DB_PORT=5432 DB_USER=user DB_PASS=password DB_NAME=feed lein run
$ curl localhost:3000/v1/feeds | jq .

{
  "feeds": [
    {
      "id": 1,
      "url": "https://www.google.com",
      "title": "Google",
      "description": "Googleのトップページです。",
      "created_at": "2024-12-19T05:24:36Z"
    },
    {
      "id": 2,
      "url": "https://www.yahoo.co.jp",
      "title": "Yahoo! JAPAN",
      "description": "Yahoo! JAPANのトップページです。",
      "created_at": "2024-12-19T05:24:36Z"
    }
  ]
}

ちゃんと接続ができてそうですね

デフォルト値を設定する

ただこれだと特にlocal環境では毎回環境変数を設定するのが億劫です

そこで、デフォルト値をlocalでの設定として設定してみます

config.edn
  :duct.database.sql/hikaricp
  {:adapter "postgresql"
   :server-name #duct/env ["DB_HOST" :or "localhost"]
   :port-number #duct/env ["DB_PORT" Int :or 5432]
   :username #duct/env ["DB_USER" :or "user"]
   :password #duct/env ["DB_PASS" :or "password"]
   :database-name #duct/env ["DB_NAME" :or "feed"]}

このように設定しました。

:server-name #duct/env ["DB_HOST" :or "localhost"]のように:orでデフォルト値を設定できます

また、#duct/env ["DB_PORT" Int]このようにすることで数値として変数を扱うことができます

環境変数を外から渡さずに起動してみます

$ lein repl
user=> (dev)
:loaded
dev=> (go)
:duct.server.http.jetty/starting-server {:port 3000}
:initiated

無事起動し、DB接続プールを作ることができてそうです

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?