Clojure: CLI で Gorilla REPL を起動する方法
tips clojure · getting-started · how-to · devtools
Gorilla REPL を Leiningen ではなく、Clojure CLI から起動する方法をメモしておきます。
モチベーション
clojure.org の REPLを使った開発ガイド に読んでいるときに Gorilla REPL なるプロジェクトに関する記載がありました。
REPLのセッションを「ノート」形式で保存したい? Gorilla REPL はまさにその目的のために作られたプロジェクトだよ!(意訳)
Gorilla REPL なるものを初めて聞いたため、早速試してみようと思いました。
が、これは Leiningenのプラグイン として実装されているものらしく、公式の Getting startedでは lein
コマンド経由で実行する方法しか説明がなされていませんでした。
これは困った…。ちょっとさわってみるために Leiningn を入れるのもいやだしなあ〜。
ということで、clj
コマンドでの起動について調査してみました。
いつか何かの役に立つかもしれないので、起動方法を残しておきましょう。
Gorilla REPL is 何?
http://gorilla-repl.org によると、
Gorilla is a rich REPL for Clojure in the notebook style. What on earth does that mean, you say? Well, maybe it’s best to take a look at a short video showing you what it can do:
Gorilla は 「ノート」形式のClojure向けリッチREPL環境です。一体全体なんのことなんだって?まあ、何ができるのかを示した短いビデオを見てみるのが一番良いかもしれません。(意訳)
で、説明ビデオがリンクされているわけですが、以下のキャプチャーを見ていただくともっと話は早いかもしれません。
その他、詳細いついては http://gorilla-repl.org を参照ください。
Clojure CLI からの起動
以下が本題
gorilla-repl.core の実装内容をみるに、clj
コマンド経由で起動するためには、
gorilla-repl.core/-main
を実行してあげれば良さそうです。
clj -Sdeps '{:deps {org.clojars.benfb/gorilla-repl {:mvn/version "0.7.0"}}}' -m gorilla-repl.core
$ clj -Sdeps '{:deps {org.clojars.benfb/gorilla-repl {:mvn/version "0.7.0"}}}' -m gorilla-repl.core
Gorilla-REPL: develop
Unable to reach update server.
Started nREPL server on port 50778
Running at http://127.0.0.1:8990/worksheet.html .
Ctrl+C to exit.
この場合、 ポート番号 8990
はハードコードされているため、毎回同じとなります。
もし、固定のポートで起動してもらっては困る、と言う場合には
clj
コマンドにてreplを起動したあとで run-gorilla-server
を実行してあげればOKでした。
$ clj -Sdeps '{:deps {org.clojars.benfb/gorilla-repl {:mvn/version "0.7.0"}}}'
Clojure 1.10.1
user=> (use 'gorilla-repl.core)
nil
user=> (run-gorilla-server {})
Gorilla-REPL: develop
Unable to reach update server.
Started nREPL server on port 65066
Running at http://127.0.0.1:65069/worksheet.html .
Ctrl+C to exit.
この場合、ポートは動的に割り当てられ、 コンソールに表示されます。
参考
-
Programming at the REPL: Enhancing your REPL workflow
https://clojure.org/guides/repl/enhancing_your_repl_workflow -
Clojurians slack #gorilla 2019-12-31
https://clojurians-log.clojureverse.org/gorilla/2019-12-31