Contributed Hobbit extensions.
Installation
Add this line to your application's Gemfile:
gem 'hobbit-contrib', require: 'hobbit/contrib'
# or this if you want to use master
# gem 'hobbit-contrib', github: 'patriciomacadden/hobbit-contrib', require: 'hobbit/contrib'
And then execute:
$ bundle
Or install it yourself as:
$ gem install hobbit-contrib
Optional dependencies
Usage
Each extension may have its own usage. In general, including the module will be enough.
require 'hobbit'
require 'hobbit/contrib'
class App < Hobbit::Base
# include hobbit session extension
include Hobbit::Session
# define your application
end
Available extensions
Hobbit::Environment
This extension allows you to control the application environment by using the provided methods. To use this extension just include the module:
require 'hobbit'
require 'hobbit/contrib'
class App < Hobbit::Base
include Hobbit::Environment
get '/' do
"currently in #{environment}"
end
end
run App.new
Available methods
-
environment
: Returns the current environment. By default isENV['RACK_ENV']
. -
development?
: Returns true if the current environment is:development
. -
production?
: Returns true if the current environment is:production
. -
test?
: Returns true if the current environment is:test
.
Note: All methods are available at class and instance context.
Hobbit::ErrorHandling
This extension provides a way of handling errors raised by your application. To use this extension just include the module:
require 'hobbit'
require 'hobbit/contrib'
class App < Hobbit::Base
include Hobbit::ErrorHandling
error Exception
exception = env['hobbit.error']
exception.message
end
get '/' do
raise Exception, 'Oops'
end
end
run App.new
Available methods
-
errors
: Returns a hash with the exceptions being handled and its corresponding handler. -
error
: Sets a handler for a given exception.
Note: If you define more than one handler per exception the last one defined will have precedence over the others.
Hobbit::Filter
This extension provides a way of calling blocks before and after the evaluation of a route (just like sinatra's filters). To use this extension just include the module:
require 'hobbit'
require 'hobbit/contrib'
class App < Hobbit::Base
include Hobbit::Filter
def authenticate_user!
# ...
end
before do
authenticate_user!
end
get '/' do
# ...
end
end
run App.new
Available methods
-
after
: Sets an after filter. Optionally, you can specify a route. -
before
: Sets a before filter. Optionally, you can specify a route.
Note: It is recommended to include Hobbit::Filter
before
Hobbit::ErrorHandling
if you want to use both extensions.
Hobbit::Mote
This module provides rendering to your hobbit application using mote. To use this extension just include the module:
require 'mote'
require 'hobbit'
require 'hobbit/contrib'
class App < Hobbit::Base
include Hobbit::Mote
get '/' do
# will render views/index.mote using views/layouts/application.mote as layout
render 'index'
end
end
Available methods
-
default_layout
: Returns the name of the default layout (Override to use another layout). -
find_template
: Returns the path to a template (Override for multiple views paths lookup). -
layouts_path
: Returns the layouts path (Override to change the layouts directory). -
partial
: Renders the given template using tilt (without a layout). -
render
: Renders the given template using tilt. You can pass alayout
option to change the layout (or set tofalse
to not use one). -
views_path
: Returns the views path (Override to change the views directory).
NOTE: Use {{content}}
within your layout to yield the rendered page.
Hobbit::Render
This module provides rendering to your hobbit application using tilt. To use this extension just include the module:
require 'tilt'
require 'hobbit'
require 'hobbit/contrib'
class App < Hobbit::Base
include Hobbit::Render
get '/' do
# will render views/index.erb using views/layouts/application.erb as layout
render 'index'
end
end
Available methods
-
default_layout
: Returns the name of the default layout (Override to use another layout). -
find_template
: Returns the path to a template (Override for multiple views paths lookup). -
layouts_path
: Returns the layouts path (Override to change the layouts directory). -
partial
: Renders the given template using tilt (without a layout). -
render
: Renders the given template using tilt. You can pass alayout
option to change the layout (or set tofalse
to not use one). -
template_engine
: Returns the template engine beign used (Override to use other template engine). -
views_path
: Returns the views path (Override to change the views directory).
Hobbit::Session
This module provides helper methods for handling user sessions. To use this extension just include the module:
require 'hobbit'
require 'hobbit/contrib'
class App < Hobbit::Base
include Hobbit::Session
use Rack::Session::Cookie, secret: SecureRandom.hex(64)
post '/' do
session[:name] = 'hobbit'
end
get '/' do
"Hello #{session[:name]}!"
end
end
Available methods
-
session
: Returns the user's session.
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
License
See the LICENSE.