amatsuda/active_decorator — pull request #17 by a2ikm (2013-03-21 14:27:16+00:00)
Title: Work with Sinatra

To enable ActiveDecorator in Sinatra, register it like:

require "active_decorator/sinatra"
register ActiveDecorator::Sinatra

Then ActiveDecorator::Sinatra reads `ROOT/decorators/*_decorator.rb`,
and decorates instance variables in `scope` and local variables passed
via `render` method with them.

The `ROOT/decorators` directory is used by default. If you want to use
another directory, you can set it as `:decorators` like:

require "active_decorator/sinatra"
set :decorators, "/path/to/your/decorators"
register ActiveDecorator::Sinatra

ActiveDecorator::Sinatra doesn't decorate following instance variables
by default:

@default_layout @env @params @preferred_extension
@request @response @template_cache

These are declared in an array named as
`ActiveDecorator::Sinatra::DEFAULT_PROTECTED_INSTANCE_VARIABLES`. If you
want to protect other instance variables, you can declare them as
`:protected_instance_variables` like:

require "active_decorator/sinatra"
set :protected_instance_variables, %w[@foo @bar]
register ActiveDecorator::Sinatra

Note that these `set` statements must be placed before the `register`
statement.

Specs for Sinatra run with the fllowing command:

`BUNDLER_GEMFILE=gemfiles/Gemfile-sinatra bundle exec rake spec:sinatra`

Sinatra doesn't support implicit object rendering (like `render @author`),
so features about this won't tested in the partial spec. This switching
is made with `rails?` method decrared in spec_helper.rb.