Rodakase 
Rodakase is a lightweight web stack on top of Roda which gives you a foundation for building robust web applications while decoupling your application code from the framework.
There are a couple of core concepts in Rodakase which makes it stand out from the crowd:
- Container-based architecture where your application dependencies are accessible through a simple IoC container
- Promotes simple, side-effect-less, functional objects with a built-in auto-injection mechanism making it trivial to compose objects
- Roda routing is decoupled from core application logic and focuses purely on http-related concerns (status codes, session, cookies etc.)
- Rendering is decoupled too, roda routing simply gets response body from your objects
- Request processing and response construction in functional style as a series of simple "function" calls
- Extreme focus on proper code organization and reusability, functionality of your application should be easily accessible using clear APIs
- Uses ROM by default for persistence
Rodakase says NO to the following concepts:
- monkey-patching
- mutable global state
- hot-code reloading in dev mode leading to additional complexity, nasty gotchas and silly constraints with regards to code organization
- implicit dependency handling through magical const-loading mechanisms
- tight coupling between web application logic and core domain logic
- tight coupling between persistence logic and core domain logic
Sample App
A sample rodakase-based web app is right here.
Status
This project hasn't been released yet. It's under heavy development.
Tools
Rodakase is based on a bunch of awesome libraries:
- roda
- roda-flow
- dry-container
- dry-auto_inject
- tilt
- transflow
The Book
Rodakase will be described in "Web Development with ROM and Roda" book that I'm working on. If you're interested in the project and/or the book, feel free to join Rodakase gitter channel.
LICENSE
See LICENSE.txt
file.
Installation
Add this line to your application's Gemfile:
gem 'rodakase'
And then execute:
$ bundle
Or install it yourself as:
$ gem install rodakase
Development
To run the specs make sure the dummy app uses proper db configuration spec/dummy/config/application.yml
.
Also you need to run the migrations, do following:
$ cd spec/dummy
$ bundle install
$ rake db:migrate
After that you can run the specs from rodakase root:
$ bundle exec rspec
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/solnic/rodakase.