/hydra-head

Hydra Repository Rails Engine (requires Rails3)

Primary LanguageJavaScriptOtherNOASSERTION

Hydra-Head

Hydra-Head is a Ruby-on-Rails 3 gem containing the core code for a web application using the full stack of hydra building blocks.

See the github wikis for information targeted to developers: http://github.com/projecthydra/hydra-head/wiki
See the duraspace hydra wikis for information at the architecture level: http://wiki.duraspace.org/display/hydra/
Additionally, new adopters and potential adopters may find the pages here useful: http://projecthydra.org/

Further questions? Ask the hydra-tech list or join the freenode #projecthydra IRC channel.

Installation/Setup

Installation Prerequisites

See http://github.com/projecthydra/hydra-head/wiki/Installation-Prerequisites

Ruby 1.9.3 is required by Hydra-Head release 4.0; RVM is strongly suggested.

Install Rails

Currently hydra-head is compatible with Rails 3.2

gem install 'rails' --version '~>3.2.2'

Generate a new rails application:

rails new my_hydra_head
cd my_hydra_head

Install Dependencies

First, add them to the Gemfile of your application. You may already have a Gemfile in the new rails application you just generated; in that case, be sure to add blacklight, hydra-head, devise and the development/test group per below:

  source 'http://rubygems.org'

  gem 'rails', '~>3.2.3'

  gem 'blacklight', '~> 3.3.2'
  gem 'hydra-head', '~> 4.0.0'

  # We will assume that you're using sqlite3 for testing/demo,
  # but in a production setup you probably want to use a real sql database like mysql or postgres
  gem 'sqlite3'

  # We will assume you're using devise in tutorials/documentation.
  # You are free to implement your own User/Authentication solution in its place.
  gem 'devise'

  # Rails uses asset pipeline.  You will need these gems for used your assets in development.
  # However, you won't need them in production because they will be precompiled.
  group :assets do
    gem 'sass-rails', '~> 3.2.0'
    gem 'compass-rails', '~> 1.0.0'
    gem 'compass-susy-plugin', '~> 0.9.0'
    gem 'jquery-rails'
  end

  # You will probably want to use these to run the tests you write for your hydra head
  # For testing with Cucumber
  group :cucumber do
    gem 'cucumber'
    gem 'cucumber-rails'
  end

  # For testing with rspec
  group :development, :test do
    gem 'rspec-rails', '>=2.9.0'
    gem 'jettywrapper'
    gem 'database_cleaner'
  end

To install all of the dependencies, run:

bundle install

On some systems, you will have to install system libraries that various gems rely on. For example, in order to install the curl gem on ubuntu you have to first install libcurl4-openssl-dev and then re-run bundler.

Even if all of the dependencies are satisfied, this will take a very long time the first time you run it. IF you become impatient, hit Ctl+C then enter this:

  gem install blacklight
  gem install hydra-head -v 4.0.0

Then re-run bundle install and it will run slightly faster.

Run the generators and migrations:

Run the blacklight generator

rails g blacklight --devise

Run the hydra-head generator

rails g hydra:head -df

Run the database migrations

rake db:migrate
rake db:test:prepare

You’re done.

Congratulations. You’ve set up the code for your Hydra Head.

Read Tools for Developing and Testing your Application, then read How to Get Started to get a sense of what you can do with your Hydra Head.

Modifying and Testing the hydra-head Gem

For those developers who want to or need to work on the hydra-head gem itself, see the Instructions for Contributors

Acknowledgements

Design & Strategic Contributions

The Hydra Framework would not exist without the extensive design effort undertaken by representatives of repository initiatives from Stanford University, University of Virginia, University of Hull and MediaShelf LLC. Contributors to that effort include Tom Cramer, Lynn McRae, Martha Sites, Richard Green, Chris Awre, and Matt Zumwalt.

Thorny Staples from Fedora Commons & DuraSpace deserves special thanks for putting all of these people in the same room together.