About
This Rails plugin provides template inheritance from Rango for Rails, so you can just install it and enjoy advantages of template inheritance without any framework switching.
Please note that this plugin works just with Ruby 1.9.1 and higher!
See an example application
Template Inheritance
Template inheritance is incredibly simple, powerful and flexible way how to handle layout/template. You usually needs more levels of layouting and you can do it very easily with template inheritance. You can have i. e. app/views/admin/posts/show.html.haml
with post-specific stuff, then app/views/admin/base.html.haml
with administration-specific layout and then app/views/base.html.haml
with the most generic layout.
See also explanation at DjangoProject.com
Rango
Rango is a light-weight web framework suitable for both smaller web services and bigger sites. It’s builded on top of Rack and it has very flexible and modular architecture. So modular that we can even use it in Rails as a drop-in replacement for Rails rendering layer.
- Rango Wiki - Rango Introduction from Ruby Manor 2009
Template Adapters
Thanks to Tilt you can use Erubis or Haml, just by using the proper extension. Tilt itself supports much more, however Rango currently support just these two engines. Some engines won’t be supported just because they don’t support Ruby code in templates (Mustache and Liquid) etc.
Usage
As a Plugin
./script/plugin install git://github.com/botanicus/rails-template-inheritance.git
As a Gem
Add these lines into your config/environment.rb
:
config.gem "tilt"
config.gem "rango", lib: nil
config.gem "rails-template-inheritance", lib: nil
Now run following tasks:
rake gems:install
rake gems:unpack
Via bundler
This is definitely the best solution since plugins can’t handle dependencies and Rails 2 bundling tasks are just general pain in the ass.
Just put gem "rails-template-inheritance"
to your Gemfile
and run gem bundle
(you have to have bundler installed). Then you have to setup your config/environment.rb
:
require_relative "../vendor/gems/environment"
Bundler.require_env(Rails.env)