Запуск lein REPL-сервера
в проекте clojure, основанном на освободителе, мы используем datomic как DB. После миграции нашего локального Dev DB на S3, размещенного на одном и добавлении необходимых зависимостей в наш project.clj, мы не сможем запустить REPL, но стек Liberator отлично работает через lein run
Мое предположение заключается в том, что соединение с БД запутывает вещи, поэтому вопрос заключается в том, как я могу как-то "отлаживать" или выяснить причину этого таймаута lein repl
?
Мой проект .clj
(defproject myproject "0.1.0-SNAPSHOT"
:main myproject.core
:jvm-opts ["-Xmx1G"]
:datomic {:schemas ["resources" ["myproject-schema.edn" ]]}
:plugins [[lein-ring "0.8.10"]]
; cp bin/transactor config/samples/free-transactor-template.properties resources/transactor.properties
:profiles {:dev
{:datomic {
; :config resources/transactor.properties
; :db-uri "datomic:free://127.0.0.1:4334/myproject"}
:db-uri "datomic:ddb://us-east-1/datomica/myproject"}
:dependencies [[ring-mock "0.1.5"]
[midje "1.5.1"]
]
}
}
:dependencies [[org.clojure/clojure "1.5.1"]
[com.datomic/datomic-pro "0.9.4556"]
; [com.datomic/datomic-free "0.9.4470"]
[com.cemerick/friend "0.2.0"]
[liberator "0.10.0"]
[compojure "1.1.5"]
[http-kit "2.1.13"]
[cheshire "5.1.1"]
[ring/ring-jetty-adapter "1.1.0"]
[ring/ring-devel "1.2.0"]
[org.clojure/clojure-contrib "1.2.0"]
[url62 "1.0.0-SNAPSHOT"]
[clj-http "0.7.8"]
[org.clojars.nathell/clojure-contrib "1.2.0"]
[com.taoensso/timbre "3.0.0-RC4"]
[clj-aws-s3 "0.3.8"]
[image-resizer "0.1.5"]
[pandect "0.3.1"]
[base64-clj "0.1.1"]
]
:ring {
:handler myproject.core
}
)
Мои профили .clj
cat ~/.lein/profiles.clj
{:user {:dependencies [[slamhound "1.5.0"]]
:aliases {"slamhound"["run" "-m" "slam.hound"]}
:plugins [[lein-datomic "0.2.0"]
[lein-midje "3.0.0"]
[lein-html5-docs "2.0.0"]
[lein-pprint "1.1.2-SNAPSHOT"]]
; :datomic {:install-location "/opt/datomic-free"}
:datomic {:install-location "/opt/datomic-pro/"}
}
}%
Мой .zshrc
export CLASSPATH=$CLASSPATH:/home/user:/opt/datomic-pro:.
Мой env
Leiningen 2.3.3 on Java 1.7.0_25 OpenJDK 64-Bit Server VM
Linux 3.8.0-35-generic #50-Ubuntu SMP Tue Dec 3 01:24:59 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Ответы
Ответ 1
Иногда может потребоваться некоторое время, чтобы все утки были в порядке. Задайте :repl-options
в файле project.clj с более длинным тайм-аутом следующим образом:
:repl-options {
;; If nREPL takes too long to load it may timeout,
;; increase this to wait longer before timing out.
;; Defaults to 30000 (30 seconds)
:timeout 120000
}
Надеюсь, это должно сделать трюк.
Ответ 2
Причина заключалась в многократном переопределении и оценке Datomic-соединения между несколькими файлами
(def conn (d/connect DATOMIC_URI))
Решение этой темы уже обсуждалось в Как работать с переменной в библиотеке, которая должна быть установлена за ее пределами?