Skip to content
Rake tasks behind Wax 🐝
Branch: master
Clone or download
Pull request Compare This branch is 12 commits ahead, 4 commits behind mnyrop:master.
Latest commit dacf2ba Apr 17, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue templates Aug 30, 2018
lib Merge pull request mnyrop#97 from mnyrop/safer-iiif-metadata Apr 17, 2019
spec swap out diacritics before slugifying Nov 12, 2018
.gitignore flatten pdfs to items IN collections, not AS collections; drop mirador Oct 16, 2018
.rspec add rspec tests for config pagemaster + lunr Jan 18, 2018
.rubocop.yml rubocop + update tests Nov 10, 2018
.travis.yml update test reporter Apr 17, 2019
.yardopts keep + version docs, fix hash enum with .clone Jul 26, 2018
LICENSE [skip ci] Jul 3, 2018 fix img [skip ci] Dec 3, 2018

wax_tasks 🐝

Gem Version License PRs Welcome docs

Build Status Maintainability Test Coverage

wax_tasks is gem-packaged set of Rake tasks for creating minimal exhibition sites with Jekyll.

It can be used to:

.. and more.

Getting Started


You'll need Ruby >= 2.4 with bundler installed. Check your versions with:

$ ruby -v
  ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin15]

$ bundler -v
  Bundler version 1.16.1

To use the IIIF task, you will also need to have ImageMagick and Ghostscript installed and functional. You can check to see if you have ImageMagick by running:

$ convert -version
  Version: ImageMagick 6.9.9-20 Q16 x86_64 2017-10-15
  Copyright: Γ‚Ε  1999-2017 ImageMagick Studio LLC
  Features: Cipher DPC Modules
  Delegates (built-in): bzlib freetype jng jpeg ltdl lzma png tiff xml zlib

... and check Ghostscript with:

$ gs -version
  GPL Ghostscript 9.21 (2017-03-16)
  Copyright (C) 2017 Artifex Software, Inc.  All rights reserved.

Next, you'll need a Jekyll site. You can clone the minicomp/wax demo site or start a site from scratch with:

$ gem install jekyll
$ jekyll new wax && cd wax


Add wax_tasks to your Jekyll site's Gemfile:

gem 'wax_tasks'

... and install with bundler:

$ bundle install

Create a Rakefile with the following:

spec = Gem::Specification.find_by_name 'wax_tasks'
Dir.glob("#{spec.gem_dir}/lib/tasks/*.rake").each { |r| load r }


After following the installation instructions above, you will have access to the Rake tasks in your shell by running $ bundle exec rake wax:taskname in the root directory of your Jekyll site.

Sample site _config.yml file:

# basic settings
title: Wax.
description: a jekyll theme for minimal exhibitions
url: ''
baseurl: '/wax'

# build settings
permalink: pretty # optional, creates `/page/` link instead of `page.html` links

# wax collection settings
  objects: # the collection name
    layout: 'iiif-image-page'
    output: true # this must be true for your .md pages to be built to html!
      source: 'objects.csv' # path to the metadata file, must be within '_data'
      source 'source_images/objects' # path to the directory of source images, must be within '_data'

# wax search index settings
  - file: 'js/lunr-index.json' # where the index will be generated
    collections: # the collections to index
        content: false # whether or not to index the markdown page content (below the YAML)
        fields: # the metadata fields to index
          - 'label'
          - 'artist'
          - 'location'
          - 'object_type'

The above example includes a single collection objects that comprises:

  1. a CSV metadata:source file (objects.csv), and
  2. a images:source directory of image and pdf files.

For more information on configuring Jekyll collections for wax_tasks, check out the minicomp/wax wiki and

Running the tasks


Takes a CSV, JSON, or YAML file of collection metadata and generates a markdown page for each record to a directory using a specified layout. Read More.

$ bundle exec rake wax:pagemaster collection-name


Generates a client-side JSON search index of your site for use with ElasticLunr.js. Read More.

$ bundle exec rake wax:lunr

NOTE >> wax:lunr will also generate a default lunr UI to use
        if you add a ui path to your lunr index configuration
        with `ui: 'example/path-to-ui.js'` and run:

        $ bundle exec rake wax:lunr UI=true


Takes a local directory of images and pdf files and generates a few image derivatives (i.e., 'thumbnail' 250w and 'full' 1140w) for Jekyll layouts and includes to use. Read More.

$ bundle exec rake wax:derivatives:iiif collection-name


Takes a local directory of images and pdf files and generates tiles and data that work with a IIIF compliant image viewer like OpenSeaDragon, Mirador, or Leaflet IIIF. Read More.

$ bundle exec rake wax:derivatives:iiif collection-name


Runs htmlproofer on your compiled site to look for broken links, HTML errors, and accessibility concerns. Runs Rspec tests if a .rspec file is present. Read More.

$ bundle exec rake wax:test


Fork/clone the repository. After making code changes, run the tests ($ bundle exec rubocop and $ bundle exec rspec) before submitting a pull request. You can enable verbose tests with $ DEBUG=true bundle exec rspec.

Note: The cannonical repository is minicomp/wax_tasks. Please submit all issues and pull requests to the minicomp/wax_tasks repo.

NOTE >> The cannonical repository is minicomp/wax_tasks.
        Please submit all issues and pull requests to the cannonical repo.

minicomp/wax_tasks ~>


The gem is available as open source under the terms of the MIT License.

You can’t perform that action at this time.