rakuna

Compose Interesting Systems from Simple Concepts

Description

rakuna is made up of several very small gems, each of which adds a set of related classes and/or mixins to reduce boilerplate code.

Goals

Conventions

Sub-Projects

Installation

gem install rakuna

Usage

require 'rakuna'

Examples

Hello World

# Create a resource!
class ExampleResource << Rakuna::Resource::Basic
  include Rakuna::Provides::Text

  def output
    'Hello, World'
  end
end

# Send all routes to ExampleResource
Webmachine.application.routes do
  add [:*], ExampleResource
end

Webmachine.application.run

Hello World, with GitHub authentication and Redis-backed session storage

# Create a resource!
class ExampleResource << Rakuna::Resource::Basic
  include Rakuna::Provides::HTML
  include Rakuna::Authentication::GitHub::Organization
  include Rakuna::Session::Redis

  def whitelist
    ['my-github-organization']
  end

  def session_id
    username
  end

  def save_avatar
    session.set 'avatar', user.avatar_url
  end

  def output
    session.renew unless session.active?
    "<p>Hello, #{username}! Your avatar is: <img src=\"#{session.get 'avatar'}\" /></p>"
  end
end

# Send all routes to ExampleResource
Webmachine.application.routes do
  add [:*], ExampleResource
end

Webmachine.application.run

Contributing to rakuna

License

MIT

Contributors