Curate Version Build Status Coverage Status

Curate is a Rails engine leveraging ProjectHydra and ProjectBlacklight components to deliver a foundation for an Institutional Repositories. It is released under the Apache 2 License

Starting a New Curate Based Application

When you generate your new Rails application, you can use Curate's application template: bash $ rails new my_curate_application -m

Or Install By Hand

Add the following line to your application's Gemfile:

gem 'curate'

And then execute: bash $ bundle $ rails generate curate

Developing and Contributing for the Curate gem


You may need to have the following installed ‡

‡ - Why "you may need"? Some of these are only optionally used in development and tests; But production will need it.

Clone the Curate repository

From the command line: bash git clone ./path/to/local


Curate uses Jetty for development and testing. You could configure it to use an alternate Fedora and SOLR location, but that is an exercise for the reader. The hydra-jetty package should not be use for secure production installations

Install Jetty

Install jetty, you should only need to do this once (unless you remove the ./jetty directory)

$ rake jetty:unzip

Running the Specs

Inside the Curate directory (i.e. ./path/to/local):

All of Them

  1. Make sure jetty is running (rake jetty:start); It will take a bit to spin up jetty.
  2. Make sure you have a dummy app ‡
    1. Run rake regenerate to build a clean app in ./spec/dummy
  3. Then run rake spec; The tests will take quite a while ‡‡

‡ - A Rails engine requires a Rails application to run. The dummy app is a generated application inside Curate in the ./spec/internal directory ‡‡ - Slow tests are a big problem and we are working on speeding them up, but its complicated.

Some of Them

In some cases you want to know the results of a single test. Here's how you do it.

  1. Make sure jetty is running (rake jetty:start); It will take a bit to spin up jetty.
  2. Make sure you have a dummy app ‡
    1. Run rake regenerate to build a clean app in ./spec/dummy
  3. Then run BUNDLE_GEMFILE=spec/internal/Gemfile bundle exec rspec path/to/spec.rb:LINE

‡ - With Curate being an Engine we need to point to the Dummy Application's Gemfile. In full Rails applications you can normally run the following rspec path/to/spec.rb:LINE

With Zeus

Zeus pre-loads your Rails app so that your normal development tasks such as console, server, generate, and specs/tests take less than one second. ‡

  1. In terminal window #1 run zeus start
  2. In terminal window #2, once Zeus is started: run zeus rake spec for all tests; or zeus test path/to/spec.rb:LINE for one

‡ - Loading the environment to run your tests takes less than a second. So running an individual test will take less time.

Contributing Back

If you are interested in helping us make Curate better, please take a look at our Contributing resources and guidelines.

Working on Curate while working on my Application

Assuming you are wanting to work on your Curate-based application and make modifications to the Curate gem, follow these instructions.

Replace the following line in the Gemfile of your Curate-based application (see Starting a New Curate Based Application):

gem 'curate' ...


gem 'curate', path: './path/to/my/clone/of/curate'

More information about Gemfile management at

You can then do concurrent development on both your clone of the Curate gem and your Curate-based application.

NOTE: Any changes you make in the Curate gem will likely require you to restart your web-server.

Integration with CAS, LDAP, Shibboleth

For integration with CAS, refer:

For integration with LDAP, refer:

For integration with Shibboleth, refer:

For integration with multiple authentication systems (and for twitter, facebook, etc.), consider using OmniAuth:

Standing up your Curate-based Rails application in Production

We are working on this and have more to come.