Crack provides a set of common
HTTP::Handlers that are similar to Rack Middleware.
Each handler provides changes needed to the
HTTP::Server::Context and the ability to configure
the handler using a block that is yields to self for setting any properties.
Add this to your application's
dependencies: crack: github: kemalyst/crack
Add the handler to your HTTP::Server implementation:
require "crack" require "http/server" Crack::Handler::Logger.instance.config do |config| config.logger = Logger.new(STDOUT) end Crack::Handler::Static.instance.config do |config| config.public_folder = "./public" config.default_file = "index.html" end HTTP::Server.new("127.0.0.1", 8080, [ Crack::Handler::Error.instance, Crack::Handler::Logger.instance, Crack::Handler::Static.instance, ]).listen
You can add these to
Kemal or any other framework that support
HTTP::Handlers in their stack.
If you want to add a handler to this library, please follow the pattern provided:
- Provide a singleton pattern with the
self.instancemethod to instantiate
- Provide a
config()method that yields self to a block to set any properties needed
- If your handler requires logging, provide a
property logger : Loggerthat can be configured in the config methods. This should use the
Loggerbase from the stdlib
- If your handler requires modifying the
HTTP::Server::Context, do so at the top of the handler so its clear what additions are being made
- Document the purpose of the handler. If there are other handlers that perform a similar task, provide the reason one might chose yours over the other
- Provide specs that cover the main functionality of your handler.
- Fork it ( https://github.com/kemalyst/crack/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
- drujensen Dru Jensen - creator, maintainer
- bigtunacan Joiey Seeley - contributor