Kemal 0.24.0 released!
Kemal is a Fast, Effective, Simple web framework written in Crystal.
Hello everyone,
Kemal 0.24.0 is here
This release brings support for Crystal 0.26.0 and adds new features. There are also some breaking changes.
New and Shiny Exception Page
Thanks to the awesome exception_page shard, we got a new and shiny exception page implemented by @mamantoha
Custom Port Bindings
You can now bind a single Kemal server to multiple ports. Thanks to @straight-shoota
Kemal.run do |config|
server = config.server.not_nil!
server.bind_tcp "127.0.0.1", 3000
server.bind_tcp "0.0.0.0", 3001
end
Breaking changes
- Removed
env.params.files
. You can use Crystal’s built-inHTTP::FormData.parse
instead
post "/upload" do |env|
HTTP::FormData.parse(env.request) do |upload|
filename = file.filename
if !filename.is_a?(String)
"No filename included in upload"
else
file_path = ::File.join [Kemal.config.public_folder, "uploads/", filename]
File.open(file_path, "w") do |f|
IO.copy(file.tmpfile, f)
end
"Upload OK"
end
end
- From now on to access dynamic url params in a WebSocket route you have to use:
ws "/:id" do |socket, context|
id = context.ws_route_lookup.params["id"]
end
- Removed
_method
magic param fromenv.params.body
.
Thanks for using and supporting Kemal. You can check the full CHANGELOG here.
P.S: You can support Kemal development via Patreon
Happy Crystalling