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)