Boot で alembic てきな依存関係の動的解消(?)ぽいことをやる
最近 Boot を本格運用し始めて色々と質問されて調べたりする機会が出来たのでちょこちょこノウハウというか Tips 的な何かを書いていきたい。
Boot で同じことをやる
Boot の場合はそれを最初から機能として持ってしまっているので新たに何か必要になるということはないです。
あまりこれはドキュメントの中で明示されていないような気がしますが、実際には set-env! や merge-env! がそもそもの機能として起動中の JVM インスタンスに対して何かしら足したりするようになっているのでできるようです。
(set-env! key val & kvs)
Sets the values for the given keys. Note that this may produce side effects, changes to the JVM's classpath, etc.
Boot Environment · boot-clj/boot Wiki · GitHub
It does amazing magical things like providing classpath isolation so that you can run multiple projects using one JVM and letting you add new dependencies to your project without having to restart your REPL.
Boot, the Fancy New Clojure Build Framework
ここでも REPL を再起動することなく依存性を追加出来ると書いてあるのでまちがいないでしょう。
実際にやる場合は例えば REPL で以下のような set-env! を評価すると良さそうです。
boot.user=> (set-env! :dependencies '[[clj-time "0.9.0"]]) #_=> nil boot.user=> (require '[clj-time.core :as t]) nil boot.user=> (t/date-time 1991 05 29) #<DateTime 1991-05-29T00:00:00.000Z>
もしくは build.boot を開いて編集しているなら set-env! の部分を REPL へと飛ばして評価するのもありでしょう。