Using lein monolith and lein-v to "orchestrate" tesla project, make it usable in IntelliJ/Cursive.
Bringing versions back into sync.
Using lein modules to build a core and different components. If you're using the core, you just need to update your group-id/artifact-id, otherwise you also need to add dependencies to the components you actually need.
Currently, these are Mongo, Quartzite and Titan.
Replaced property based configuration by EDN based configuration using gorillalabs/config. You need to update your configuration files.
Moved config parameters:
status.url
tostatus.path
- and
health.url
tohealth.path
.
You do not need to change anything if you did not overwrite the default behaviour.
If you need to get info from the config component, there's a new function config for that.
The function gorillalabs.tesla.system/start-system
is renamed to start
, gorillalabs.tesla.system/empty-system
is renamed to base-system
.
tesla-microservice does not come with an embedded jetty server out of the box anymore.
To go on with jetty as before, add the new dependency in project.clj
:
[de.otto/tesla-microservice "0.1.15"]
[de.otto/tesla-jetty "0.1.0"]
Add the server to your system before you start it. Pass any additional dependencies of the server (:example-page
in this case).
(system/start (serving-with-jetty/add-server (example-system {}) :example-page))
A working example for this is in the simple-example.
You can also use the ->
-threading macro as demonstrated in the mongo-example.
The routes
-component was abandoned in favour of the handler
-component.
In the ring library, handlers are the thing to push around (wrapping routes and middleware). You can choose your routing library now. Instead of compojure you could also use e.g. bidi.
Change components relying on the old routes
-component should be trivial: Instead of adding a vector of (compojure)-routes using gorillalabs.tesla.stateful.routes/register-routes
,
(routes/register-routes
routes
[(c/GET "/test" [] (test-fn))])
just add a single ring handler using gorillalabs.tesla.stateful.handler/register-handler
like this:
(handlers/register-handler
handler
(c/routes (c/GET "/test" [] (test-fn))))
Add multiple routes like this:
(handlers/register-handler
handler
(c/routes (c/GET "/route1" [] (test-fn))
(c/GET "/route1" [] (test-fn2))))
Note that the keyword for the dependency changed from :routes
to :handler
in the base system.
Specific logging-dependencies and the escaping-messageconverter have been removed. You now have to (read: you are able to) configure logging yourself in your app. To exactly restore the old behaviour add these dependencies to you own application:
[org.slf4j/slf4j-api "1.7.12"]
[ch.qos.logback/logback-core "1.1.3"]
[ch.qos.logback/logback-classic "1.1.3"]
[de.otto/escaping-messageconverter "0.1.1"]
in your logback.xml
replace
<conversionRule conversionWord="mescaped"
converterClass="gorillalabs.tesla.util.escapingmessageconverter" />
with
<conversionRule conversionWord="mescaped"
converterClass="gorillalabs.util.escapingmessageconverter" />