Rodakase Join the chat at https://gitter.im/solnic/rodakase

Gem Version Build Status Dependency Status Code Climate Test Coverage Inline docs

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.