Decorators for Sinatra Applications
MIT License
sinatra-decorator is a gem for Sinatra. Adds an object-oriented layer of presentation logic to your Sinatra application.
Add the following to your Gemfile
:
gem 'sinatra/decorator'
And then execute:
$ bundle
# app.rb
require 'sinatra'
require 'slim'
require 'sinatra/decorator'
require_relative 'models/post'
require_relative 'decorators/post_decorator'
get '/' do
@post = Post.new.decorate # will try to find "#{self.class}Decorator" class
slim :show
end
# models/post.rb
#class Post < ActiveRecord::Base
# include Sinatra::Decorator::Decoratable
#end
class Post
include Sinatra::Decorator::Decoratable
attr_accessor :id, :body
def initialize(params = {})
@id = params[:id] || 1
@body = params[:body] || "body"
end
end
# decorators/post_decorator.rb
class PostDecorator < Sinatra::Decorator::Base
def formated_body
object.body.gsub('b', 'a')
end
end
# views/show.slim
h1 = @post.id
div
= @post.formated_body
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)This gem was made on the basis of the padrino-decorator. I greatly appreciate for the orignal author Mr. @tyabe.