Errgent

Gently generate error pages using layout, your favorite markup language, basic and url helpers or the other stuff you ever used in your templates. Out of the box Rails has default error pages, but they're hardly maintained, because if you do a little change in one, you'll have to fix the others. With Errgent you can make changes and re-generate all pages at once.

Installation

gem 'errgent'

Usage

Errgent ships with rake task that you can run locally or on your server using Capistrano. In order to generate pages simply run rake errgent. By default layouts/error_page is used as a layout. But you can customize this behaviour as many other things creating your own task in lib/tasks/errgent.rake:

desc 'Generate error pages'
task errgent: :environment do
  renderer = Errgent::Renderer.new(
    codes: [403, 404, 422, 500], # error codes by default, @code variable is available in layout
    vars: { name: 'value' }, # variable @name will be available in layout
    layout: 'layouts/error_page', # where to find your layout by default
    output: 'public/%s.html' # where to put generated pages by default, %s is the replacement for @code
  )

  # You can override or define new helpers:
  renderer.helpers do
    def current_user
      nil
    end

    def logged_in?
      false
    end
  end

  renderer.render
end

Capistrano

Since almost all applications use Asset Pipeline, the links to stylesheets, js or images must be represented with digest in their names. It's barely possible to do locally unless you generate assets locally either. That's why Errgent ships with Capistrano task. Just put this to deploy.rb or Capfile (~> 2.0 and ~> 3.0 supported) and all the pages will be generated after assets:precompile task on your server during deployment:

require 'errgent/capistrano'

In other words for development, generate pages locally see how it looks, fix it if it needs. Then re-generate them on the server, because development version isn't workable in production.

License

Errgent is released under the MIT License.