Padrino Decorator

padrino-decorator is a gem for Padrino.
Adds an object-oriented layer of presentation logic to your Padrino application.

Build Status Code Climate Coverage Status Dependency Status

Installation

Note: Version 0.0.3 or later work with Padrino 0.12.3 later.

Add the following to your Gemfile:

gem 'padrino-decorator'

And then execute:

$ bundle

Decorator Generator

Padrino provides generator support for quickly creating new decorators within your Padrino application. Note that the decorator tests are generated specifically tailored towards the testing framework chosen during application generation.

Very important to note that decorator generators are intended primarily to work within applications created through the Padrino application generator and that follow Padrino conventions.

Using the decorator generator is as simple as:

$ padrino-gen decorator User
Options Default Aliases Description
root . -r specify the root destination path
app /app -a specify the application
destroy false -d removes all generated files
namespace -n specify the name space of your padrino project

Examples

# app/controllers/posts.rb
SampleProject::App.controllers :posts do

  get :index do
    source = Post.all
    @posts = decorate(source)
    render 'posts/index'
  end

  get :show, with: :id do
    source = Post.find(params[:id])
    @post = decorate(source)
    # or
    @post = PostDecorator.new(source, context: self)
    render 'posts/show'
  end

end

# app/decorators/post_decorator.rb
class PostDecorator < Padrino::Decorator::Base
  context SampleProject::App

  def formated_body
    h.simple_format(object.body)
  end

end

# app/views/posts/show.slim
h1 = @post.title
div
  = @post.formated_body

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Copyright (c) 2013 Takeshi Yabe. See LICENSE for details.