Clojure Tutorial Part 6 -- repl で ring-jetty-adapter でワンラインで サーバーを起動する
kaede
Posted on June 4, 2022
参考
引き続き、ayato-p さんの記事を参考に Clojure で web を書いていく。
project.clj の dependencies に Ring を追加する
root/project.clj を開いてみる
(defproject cljblog "0.1.0-SNAPSHOT"
:description "CLJ web app"
:dependencies [[org.clojure/clojure "1.10.3"]]
:main ^:skip-aot cljblog.core
:target-path "target/%s"
:profiles {:uberjar {:aot :all
:jvm-opts ["-Dclojure.compiler.direct-linking=true"]}})
デフォルトではこうして description や dependencies、profiles
並んでいる
project.clj というファイルは Node.js の pakcage.json のようなライブラリを管理するファイルだと解釈する。
また、Clojure では Node.js で npm i {packagaName}
でインストールするのと違って、ライブラリを追加するときはファイルに直接書き込むらしい。
:dependencies [
[org.clojure/clojure "1.10.3"]
[ring/ring-core "1.8.0"]
[ring/ring-jetty-adapter "1.8.0"]
]
- ring-core
- ring-jetty-adapter
これらのライブラリを dependencies に追加する
カッコのスタイルは まだ慣れないので、一時的に JS と同じにしてます。
lein repl で動作確認する
lein repl
Retrieving
ring/ring-core/1.8.0/ring-core-1.8.0.jar from clojars
Retrieving ring/ring-jetty-adapter/1.8.0/
ring-jetty-adapter-1.8.0.jar from clojars
Retrieving ring/ring-codec/1.1.2/
ring-codec-1.1.2.jar from clojars
Retrieving ring/ring-servlet/1.8.0/
ring-servlet-1.8.0.jar from clojars
cljblog.core=>
lein repl で CLI 起動した際、依存関係がダウンロードされる。
(require '[ring.adapter.jetty :as jetty])
依存関係に追加した ring jetty adapter を import して
(def server (jetty/run-jetty \
(fn [_] {:body "Hello, world!"}) \
{:port 3000 :join? false})) \
即時関数で 引数の
body に Hello World の文字列を指定して
port に 3000 を指定して
実行する。
2022-06-04 19:58:12.556:INFO:
oejs.Server:nREPL-session-123abc:
Started @341863ms
#'cljblog.core/server
すると、サーバーが起動して
ブラウザで確認できる。
サーバーの停止
(.stop server)
2022-06-04 22:07:42.958:INFO:
oejs.AbstractConnector:nREPL-session-1234:
Stopped ServerConnector@5ec4d432
{HTTP/1.1,[http/1.1]}{0.0.0.0:3000}
nil
これで先ほど起動させたサーバーを停止できる。
今後
参考記事の続きの、サーバーを起動、停止、再起動するファイルを作って
それを使ってコマンドとして使えるようにするところをやる
まとめ
Clojure と lein でサーバーを起動するには
project.clj ファイルに
- ring-core
- ring-jetty-adapter
これらを追加して
repl を起動して
run-jetty に body と port を渡す即時関数を動かす
すると、ブラウザで確認できる。
Posted on June 4, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
October 30, 2024
November 18, 2024