README.md in rack-app-0.22.0 vs README.md in rack-app-0.23.0

- old
+ new

@@ -43,10 +43,45 @@ ## Is it Production ready? Yes, in fact it's already powering heroku hosted micro-services. +## Principles + +* Keep It Simple +* No Code bloat +* No on run time processing, or keep at the bare minimum +* Fully BDD (Behaviour Driven Design) + * build in test module to ease the development with easy to use tests +* Easy to Learn + * rack-app use well known and easy to understand conventions, such as sinatra like DSL +* Principle Of Least Surprise +* Modular design +* Only dependency is rack, nothing more +* Open development +* Try to create Examples for every feature so even the "sketch to learn new" types can feel in comfort + +## Features + +* easy to understand syntax + * module method level endpoint definition inspirited heavily by the Sinatra DSL + * unified error handling + * syntax sugar for default header definitions + * namespaces for endpoint request path declarations so it can be dry and unified +* no Class method bloat, so you can enjoy pure ruby without any surprises +* App mounting so you can crete separated controllers for different task +* Null time look up routing + * allows as many endpoint registration to you as you want, without impact on route look up speed +* only basic sets for instance method lvl for the must need tools, such as params, payload +* simple to use class level response serializer + * so you can choose what type of serialization you want without any enforced convention +* static file serving so you can mount even filesystem based endpoints too +* built in testing module so your app can easily written with BDD approach +* made with performance in mind so your app don't lose time by your framework +* per endpoint middleware definitions + * you can define middleware stack before endpoints and it will only applied to them, similar like protected method workflow + ## Usage config.ru #### basic @@ -178,23 +213,29 @@ * [Escher Authorized Api](https://github.com/rack-app/rack-app-example-escher) * complex authorization for corporal level api use ## [Benchmarking](https://github.com/adamluzsi/rack-app.rb-benchmark) -| name | user | system | total | real | -|------------------|----------------------------|------------------------|-----------------------|------------------------| -| rack | 3.150000000000001e-05 | 1.3000000000000003e-06 | 3.280000000000001e-05 | 3.602101e-05 | -| rack-app | 0.0005159999999999999 | 1.4000000000000005e-05 | 0.0005300000000000001 | 0.0005141295 | -| ramaze | 0.0005166999999999999 | 1.98e-05 | 0.0005365 | 0.0005347348 | -| brooklyn | 0.0007564 | 3.700000000000001e-06 | 0.0007601000000000001 | 0.0007743060099999998 | -| nancy | 0.000812 | 5.900000000000001e-06 | 0.0008179000000000001 | 0.0008314749300000001 | -| scorched | 0.0008451000000000001 | 4.699999999999999e-06 | 0.0008498000000000001 | 0.00085131501 | -| sinatra | 0.0008465000000000001 | 7.000000000000001e-06 | 0.0008535000000000001 | 0.00086448211 | -| hobbit | 0.0013664 | 4.5e-06 | 0.0013709 | 0.0013804752700000004 | -| grape | 0.0018807 | 2.7800000000000005e-05 | 0.0019085 | 0.0019229531400000001 | -| rails | 0.0018995000000000001 | 7.06e-05 | 0.0019701 | 0.00198401458 | -| camping | 0.002921 | 7.24e-05 | 0.0029934000000000002 | 0.0030896778800000003 | -| cuba | 0.0034559000000000005 | 2.8600000000000004e-05 | 0.0034845 | 0.00349655002 | +the benchmarking was taken on the following hardware specification: +* Processor: 2,7 GHz Intel Core i5 +* Memory: 16 GB 1867 MHz DDR3 +* Ruby: ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin15.0] +* Endpoint declaration count: 1000 + +| name | version | current / fastest | user | system | total | real | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| rack | 1.6.4 | 1.0 | 4.4999999999994597e-10 | 4.999999999999855e-11 | 5.000000000001581e-10 | 4.669824999999623e-10 | +| rack-app | 0.23.0 | 5.64 | 2.6249999999995462e-09 | 5.0000000000003155e-11 | 2.674999999999656e-09 | 2.6337825000000033e-09 | +| ramaze | 2012.12.08 | 10.761 | 4.7250000000004294e-09 | 3.249999999997837e-10 | 5.0499999999999815e-09 | 5.025382500000196e-09 | +| brooklyn | 0.0.1 | 135.196 | 6.202499999997365e-08 | 2.5000000000010383e-10 | 6.227499999994257e-08 | 6.31342025000291e-08 | +| nancy | 0.3.0 | 141.491 | 6.44500000000412e-08 | 4.0000000000002173e-10 | 6.485000000002128e-08 | 6.607404000000881e-08 | +| rails | 4.2.5.1 | 149.063 | 6.475000000004323e-08 | 2.54999999999825e-09 | 6.729999999999027e-08 | 6.960978250001378e-08 | +| hobbit | 0.6.1 | 152.009 | 6.86499999999909e-08 | 5.50000000000627e-10 | 6.920000000002929e-08 | 7.09855800000375e-08 | +| scorched | 0.25 | 206.02 | 9.227499999997586e-08 | 6.249999999997911e-10 | 9.289999999997338e-08 | 9.620763750005751e-08 | +| sinatra | 1.4.7 | 252.893 | 1.1582499999996941e-07 | 9.000000000006287e-10 | 1.167249999999214e-07 | 1.1809659249996387e-07 | +| grape | 0.14.0 | 999.893 | 4.5052499999980065e-07 | 4.900000000001301e-09 | 4.554249999998522e-07 | 4.66932680000025e-07 | +| camping | 2.1.532 | 2246.199 | 1.0080499999997654e-06 | 1.4049999999999699e-08 | 1.0220999999995006e-06 | 1.0489356725004438e-06 | +| cuba | 3.5.0 | 2951.837 | 1.3101249999997173e-06 | 1.302499999999637e-08 | 1.3231499999997228e-06 | 1.3784562299989904e-06 | ## Roadmap ### Team [Backlog](https://docs.google.com/spreadsheets/d/19GGX51i6uCQQz8pQ-lvsIxu43huKCX-eC1526-RL3YA/edit?usp=sharing)