Skip to content
A Hyrax-based ETD repository including deposit workflow
Branch: master
Clone or download
little9 and bess Better token handling
The way the CSRF token was handled was changed
to get the new system spec for submitting a
an ETD to pass, but this caused problems in QA
(where you need the CSRF token) this changes
the token code so that it will work in prod while
keeping the system spec passing.
Latest commit f4d52fe Mar 20, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
app Better token handling Mar 20, 2019
db Edit an ETD after it has been submitted. Story #1192 Jul 27, 2018
lib Fix for school display on edit form Mar 18, 2019
log Initial app, generated via template installer Apr 4, 2017
solr/config Turn of `copyField` for "suggest" in Solr configuration Apr 6, 2018
test Initial app, generated via template installer Apr 4, 2017
tmp Initial app, generated via template installer Apr 4, 2017
vendor/assets Initial app, generated via template installer Apr 4, 2017
.babelrc Ensure that babel-polyfill is loaded Aug 8, 2018
.env.test Use local cache directories during test runs Jun 25, 2018
.eslintrc.js Create a from using Vue and a state object Jun 28, 2018
.rubocop.yml Remove old UI and convert feature to system specs Mar 19, 2019
.solr_wrapper Use common solr & fedora installers for all projects Jun 21, 2018
Gemfile Remove old UI and convert feature to system specs Mar 19, 2019
Gemfile.lock Remove old UI and convert feature to system specs Mar 19, 2019
LICENSE.txt Optionally cc embargo expiration notifications Jan 21, 2019
capfile Initial app, generated via template installer Apr 4, 2017
yarn.lock Update the yarn packages Mar 19, 2019


Rosa Laevigata image A repository for depositing, managing, and discovering Electronic Theses and Dissertations (ETDs). Rosa Laevigata or cherokee rose is the state flower of Georgia.

Build Status Coverage Status Inline docs Stories in Ready

Environment variables in development

See the dotenv sample file for environment variables you may need to set in your development environment.

Cron jobs in production

There are certain cron jobs that are expected to run in production. These include graduation job, fixity audit, embargo expiration, and others. We use the whenever gem to manage these. If you need to make changes to the scheduled jobs, please update config/schedule.rb and the new crontab should be installed via capistrano when the code is deployed.

Please note that in order to run as expected, the PATH must be defined: run crontab -e as the deploy user and ensure these lines are at the top of your cron file:


Please ensure that any scheduled jobs write to the rails log file so we can track whether they are running as expected.

Suppressing email for bouncing addresses

If an email address is bouncing, or if someone prefers not to receive email notifications, add the email address to the list in config/emory/do_not_send.yml

Copying embargo notification emails to a staff member

To send a copy of all notification expiration emails to a staff member, add that person's uid to an environment variable called EMBARGO_NOTIFICATION_CC in the .env.production file on the production server (other servers are configured not to send email).

Developer Setup

  1. Change to your working directory for new development projects cd .
  2. Clone this repo git clone
  3. Change to the application directory cd laevigata
  4. Use set your ruby version to 2.4.2 and the gemset of your choice eg. rvm use --create 2.4.2@laevigata
  5. Install gem dependencies bundle install
  6. Ensure you have yarn installed: brew install yarn or npm install -g yarn
  7. Install yarn dependencies yarn install
  8. Start redis redis-server & note: use & to start in the background, or run redis in a new terminal session
  9. Setup environment variables for your development environment: cp dotenv.sample .env.development, see the Environment variables in development section for more details
  10. Read the section on 'Database Authentication' below and decide if you want to set up your environment for database authentication.
  11. Start the demo server in its own terminal session bin/rails hydra:server
  12. Start the webpack dev server bin/webpack-dev-server
  13. Run the first time setup script bin/setup
  14. Run the test suite bin/rails ci

Database Authentication

In production, we use Shibboleth exclusively for user authentication. However, authenticating to Shibboleth from your local development environment might not be feasible. Instead, you'll want to set up local database authentication.

To set your dev environment for database authentication, you need to set this environment variable:


User and workflow setup

Each Emory school has its own AdminSet, which determines the approval process for that school, and who can approve deposited ETDs. Running rake db:seed will create an AdminSet for each school in the schools.yml file, load the appropriate workflow, and set permissions such that any registered user can deposit. rake db:seed should be idempotent -- you can run it over and over again safely.

A "superuser" can manage all admin_sets, edit all ETDs, and approve submissions everywhere. To create a new superuser, add the user's email address to the config/emory/superusers.yml file. Then run rake db:seed to reload the config. Until we get real authentication running, the password for all superusers is 123456

Note: Do not run bin/setup except the very first time you setup the application, or if you need to wipe out everything in your development instance. It will wipe your database but leave your AdminSets in place, making a huge mess that you can't easily recover from.

Browse Everything (Box integration)

These instructions work for setting up a key either for a server or for local testing.

  1. Go to and log in as yourself (this will be your personal developer account credentials)
  2. Select 'custom application' and hit 'next'
  3. Select 'Standard OAuth 2.0 (User Authentication)' and hit 'next'
  4. Give your app a unique name (e.g., "laevigata-yourname" or "etd-staging-upgrade") and it will give you a url like:
curl -H \
"Authorization: Bearer lCuEl1KbmQzIQut6HVFR3IlZ4TkAaCMK"
  1. Go to
  2. Click on your app name, and then on the 'Configuration' tab on the left.
  3. In a box labeled OAuth 2.0 Credentials you will see your OAuth credentials. You'll need these.
  4. If NEW_UI_ENABLED=true:
  5. Set the OAuth 2.0 Redirect URI value to https://SERVER_NAME/auth/box/ (with the slash at the end) Or, if this is your local dev box, the value might be http://localhost:3000/auth/box/
  6. Set the CORS domain to https://SERVER_NAME (without a slash at the end) Or, if this is your local dev box, the value might be http://localhost:3000
  7. If NEW_UI_ENABLED=false:
  8. Set the OAuth 2.0 Redirect URI value to https://SERVER_NAME or http://localhost:3000
  9. Leave the CORS domain blank
  10. Save changes

Adding box credentials to a server

Add the credentials you just made to the .env.production file on the server where the application is running. Ideally, add them to ansible so they are maintained in version control and the server can be re-built with these credentials in place.

Adding box credentials locally

  1. Follow these instructions:
  2. rails g browse_everything:config
  3. copy the client_id and client_secret from box into your newly created config/browse_everything_providers.yml file and uncomment the box section
  4. The generator will try to add the BrowseEverything mount to your config/routes.rb file. This already exists in Laevigata, so remove the line it added.
  5. Save everything and restart your rails server and you should be good to go!
You can’t perform that action at this time.