Skip to content
This repository has been archived by the owner. It is now read-only.
Plum: Hydra Head to support digitization workflows
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Note: Plum was retired on 2018-04-16. Please see Figgy for current development.

Plum. A Hydra head to support digitization workflows

Circle CI Coverage Status Code Climate Stories in Ready Apache 2.0 License

Plum is a Hydra head based on Hyrax, with two types of works:

  • ScannedResource: a book or other resource composed of one or more scanned pages
  • MultiVolumeWork: a book set, sammelband or other resource composed of multiple ScannedResources


  • Drag-and-drop tools for reordering FileSets and editing structure
  • Generating IIIF manifests for Collections and Works based on that structure
  • Building PDFs of Works based on their IIIF manifests
  • Performing OCR with Tesseract
  • Simple state-based workflow
  • Retrieving external metadata from our finding aids and catalog web services


  • Redis
    • Start Redis with redis-server or if you're on certain Linuxes, you can do this via sudo service redis-server start.
  • Kakadu
    • On a mac, extract the file and run the pkg installer therein (don't get distracted by the files called kdu_show)
  • Tesseract
    • Version 3.04 is required. You can install it on Mac OSX with brew install tesseract --with-all-languages For Ubuntu you'll have to compile it.
  • RabbitMQ (Optional)
    • Start with rabbitmq-server
    • Used for publishing create/update/delete events for systems such as Pomegranate

Initial Setup

After cloning the Plum repository:

  • Install dependencies: bundle install
  • Setup the database: rake db:migrate
  • Setup ActiveFedora::Noid minter: rails g active_fedora:noid:seed
  • Create the default admin set: rake hyrax:default_admin_set:create
  • Load the workflows in config/workflows: rake hyrax:workflow:load

Running the Tests

Run the test suite:

$ rake ci

You may also want to run the Fedora and Solr servers in one window with:

$ rake hydra:test_server

And run the test suite in another window:

$ rake spec

Javascript tests

To run the Javascript test suite, run:

$ rake spec:javascript

You can then open the file tmp/jasmine/runner.html in a browser to run the tests in that browser. You may need to pass options to allow access to local files, e.g., on MacOSX, you can quit Chrome and then open it with the Javascript tests:

$ open -a "Google Chrome" tmp/jasmine/runner.html --args --allow-file-access-from-files

Adding an Admin user and assigning workflow roles

  1. Run the development servers with rake hydra:server (or run Rails and Solr/Fedora separately with rails s and rake server:development).
  2. Go to http://localhost:3000/users/auth/cas and login with CAS
  3. $ rake add_admin_role
  4. Go to http://localhost:3000/admin/workflow_roles and grant workflow roles

Configuring Loris for Development

  1. Install Docker Toolbox
  • Only necessary for mac or windows machines. For unix boxes install via wget -qO- | sh
  1. Start a docker VM: docker-machine start default
  2. Setup your docker environment: eval "$(docker-machine env default)"
  3. Retrieve the loris image: docker pull lorisimageserver/loris
  4. Start the container:
docker run --name loris -v /path/to/plum/tmp/derivatives:/usr/local/share/images -d -p 5004:5004 lorisimageserver/loris
  1. Find the docker IP address with docker-machine ls
  2. Export config variable for IIIF url: export PLUM_IIIF_URL="http://<docker-ip>:5004"
  3. Images should be available at http://<docker-ip>:5004/ based on the FileSet id. e.g., if your docker IP address is, the full view of FileSet 70795765b would be at
You can’t perform that action at this time.