What is Sufia?

Sufia uses the full power of Samvera and extends it to provide a user interface around common repository features and social features (see below). Sufia offers self-deposit and proxy deposit workflows, and mediated deposit workflows are being developed in a community sprint running from September-December 2016. Sufia delivers its rich and growing set of features via a modern, responsive user interface. It is implemented as a Rails engine, so it is meant to be added to existing Rails apps.

Help

Getting started

This document contains instructions specific to setting up an app with Sufia
v7.4.1. If you are looking for instructions on installing a different
version, be sure to select the appropriate branch or tag from the drop-down
menu above.

Prerequisites are required for both Creating a Sufia-based app and Contributing new features to Sufia.
After installing the Prerequisites:

Run fits.sh -h from the command line and see a help message to ensure FITS is properly installed

Give your Sufia app access to FITS by:

Adding the full fits.sh path to your PATH (e.g., in your .bash_profile), OR

Changing config/initializers/sufia.rb to point to your FITS location: config.fits_path = "/<your full path>/fits.sh"

Derivatives

Install LibreOffice. If which soffice returns a path, you're done. Otherwise, add the full path to soffice to your PATH (in your .bash_profile, for instance). On OSX, soffice is inside LibreOffice.app. Your path may look like "//LibreOffice.app/Contents/MacOS/"

You may also require ghostscript if it does not come with your compiled version LibreOffice. brew install ghostscript should resolve the dependency on a mac.

NOTE: derivatives are served from the filesystem in Sufia 7, which is a difference from earlier versions of Sufia.

Environments

Note here that the following commands assume you're setting up Sufia in a development environment (using the Rails built-in development environment). If you're setting up a production or production-like environment, you may wish to tell Rails that by prepending RAILS_ENV=production to the commands that follow, e.g., rails, rake, bundle, and so on.

Ruby

First, you'll need a working Ruby installation. You can install this via your operating system's package manager -- you are likely to get farther with OSX, Linux, or UNIX than Windows but your mileage may vary -- but we recommend using a Ruby version manager such as RVM or rbenv.

We recommend either Ruby 2.3 or the latest 2.2 version.

Redis

Redis is a key-value store that Sufia uses to provide activity streams on repository objects and users, and to prevent race conditions as a global mutex when modifying order-persisting objects.

Starting up Redis will depend on your operating system, and may in fact already be started on your system. You may want to consult the Redis documentation for help doing this.

Creating a Sufia-based app

Generating a new Rails application using Sufia's template above takes cares of a number of steps for you, including:

Adding Sufia (and any of its dependencies) to your application Gemfile, to declare that Sufia is a dependency of your application

Running bundle install, to install Sufia and its dependencies

Running Sufia's install generator, to add a number of files that Sufia requires within your Rails app, including e.g. database migrations

Loading all of Sufia's database migrations into your application's database

Loading Sufia's default workflows into your application's database

Generate a work type

While earlier versions of Sufia came with a pre-defined object model, Sufia 7 allows you to generate an arbitrary number of work types. Let's start by generating one.

Pass a (CamelCased) model name to Sufia's work generator to get started, e.g.:

rails generate sufia:work Work

or

rails generate sufia:work MovingImage

Start servers

To test-drive your new Sufia application in development mode, spin up the servers that Sufia needs (Solr, Fedora, and Rails):

rakehydra:server

And now you should be able to browse to localhost:3000 and see the application. Note that this web server is purely for development purposes; you will want to use a more fully featured web server for production-like environments.

Add Default Admin Set

After Fedora and Solr are running, create the default administrative set by running the following rake task:

rake sufia:default_admin_set:create

You will want to run this command the first time this code is deployed to a new environment as well. Note it depends on loading workflows, which is run by the install template but also needs to be run in a new environment:

rake curation_concerns:workflow:load

Managing a Sufia-based app

The Sufia Management Guide provides tips for how to manage, customize, and enhance your Sufia application, including guidance specific to: