/em-midori

Lightweight, Flexible and Fast Ruby Web Framework

Primary LanguageRubyMIT LicenseMIT

midori

This project is still not production-ready. Questions, suggestions and pull requests are highly welcome.

🎉 Celebrate 10K downloads to midori.

Logo and Slogan

Description

Midori is a Ruby Web Framework, providing high performance and proper abstraction.

midori midori-contrib murasaki
midori logo midori logo midori logo
Web Framework Official Extensions Modularized Event Engine
Build Status Build Status Build Status
Test Coverage Test Coverage Test Coverage
Code Climate Code Climate Code Climate
Issue Count Issue Count Issue Count
Dependency Status Dependency Status Dependency Status
doc doc doc
Gem Version Gem Version Gem Version
Gem Gem Gem
license license license

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

  1. Support HTTP/2
  2. Add MVC abstraction example with scaffold
  3. Improve performance of eventloop
  4. More examples on using midori