midori
This project is still not production-ready. Questions, suggestions and pull requests are highly welcome.
Description
Midori is a Ruby Web Framework, providing high performance and proper abstraction.
midori | midori-contrib | murasaki |
---|---|---|
![]() |
![]() |
![]() |
Web Framework | Official Extensions | Modularized Event Engine |
Requirements
- Ruby >= 2.2.6
Installation
gem install em-midori
With Bundler
gem 'em-midori', require: 'midori'
bundle install
FAQ
Performance
Following benchmark results uses em-midori-benchmark, testing {msg: "Hello"}
JSON response by visiting GET /
with a single-core, 4GB memory, UCloud Linux instance.
Note: Performance under Mac OS X needs to be further improved. wrk
gives very bad performance result, but ab
gives a good one. The following result is tested under Linux.
framework | version | req/s |
---|---|---|
Rails (Thin, Ruby) | 5.0.0.1 | 521.58 |
Rails (API Mode, Thin, Ruby) | 5.0.0.1 | 760.03 |
Sinatra (Thin, Ruby) | 2.0.0 | 1912.23 |
express.js (Node.js) | 4.15.3 | 4944.58 |
midori (Ruby) | 0.2.4 | 3937.08 |
Name
The name midori comes from midori machi, which was the place I stay on my first travel to Tokyo.
Semantic Versioning
Version consists of four numbers:
Milestone | Major | Minor | Patch | |
---|---|---|---|---|
Example | 1. | 2. | 1. | 5 |
Explanation | Milestone version | Incompatible API changes | Add feature | Fix bugs |
Note: Before version v1.0, there's no minor version API compatible ensuring.
Contributing
See Contributing Guidelines before you leave any comment.
Tutorial & Example
There is an unfinished tutorial available here.
There is also an example showing how to use midori with a todo-list web app available here.
Roadmap
Development roadmap has been moved here.
Detailed release notes for published versions can be seen here.
Midori 2 Goals
- Support HTTP/2
- Add MVC abstraction example with scaffold
- Improve performance of eventloop
- More examples on using midori