Hydra::Works
What is hydra-works?
The Hydra::Works gem implements the PCDM Works data model using ActiveFedora-based models. In addition to the models, Hydra::Works includes associated behaviors around the broad concept of describable "works" or intellectual entities, the need for which was expressed by a variety of Samvera community use cases.
Product Owner & Maintenance
hydra-works
was a Core Component of the Samvera Community. Given a decline in available labor required for maintenance, this project no longer has a dedicated Product Owner. The documentation for what this means can be found here.
Product Owner
Vacant
Until a Product Owner has been identified, we ask that you please direct all requests for support, bug reports, and general questions to the #dev
Channel on the Samvera Slack.
Help
The Samvera community is here to help. Please see our support guide.
Getting Started
The PCDM Works domain model includes the following high-level entities:
- Collection: a pcdm:Collection that indirectly contains zero or more Works and zero or more Collections
- Work: a pcdm:Object that holds zero or more FileSets and zero or more Works
- FileSet: a pcdm:Object that groups one or more related pcdm:Files, such as an original file (e.g., PDF document), its derivatives (e.g., a thumbnail), and extracted full-text
View a diagram of the Hydra::Works domain model.
Behaviors included in the model include:
- Characterization of original files within FileSets
- Generation of derivatives from original files
- Virus checking of original files
- Full-text extraction from original files
Dependencies
Check out the Hydra::Derivatives README for dependencies.
Additional dependencies required for specs
ClamAV
- Mac installation
$ brew install clamav $ cp /usr/local/etc/clamav/freshclam.conf.sample /usr/local/etc/clamav/freshclam.conf $ freshclam
Installation
Add these lines to your application's Gemfile:
gem 'hydra-works', '~> 0.15'
And then execute:
$ bundle install
Or install it yourself:
$ gem install hydra-works
Usage
Usage involves extending the behavior provided by this gem. In your application, you can create Hydra::Works-based models like so:
class Collection < ActiveFedora::Base
include Hydra::Works::CollectionBehavior
end
class Book < ActiveFedora::Base
include Hydra::Works::WorkBehavior
end
class Page < ActiveFedora::Base
include Hydra::Works::FileSetBehavior
end
collection = Collection.create
book = Book.create
page = Page.create
collection.members << book
collection.save
book.members << page
book.save
file = page.files.build
file.content = "The quick brown fox jumped over the lazy dog."
page.save
Virus Detection
To turn on virus detection, install ClamAV on your system and add the clamby
gem to your Gemfile
gem 'clamby'
Then include the VirusCheck
module in your FileSet
class:
class Page < ActiveFedora::Base
include Hydra::Works::FileSetBehavior
include Hydra::Works::VirusCheck
end
Access controls
We are using Web ACL as implemented by hydra-access-controls.
How to contribute
If you'd like to contribute to this effort, please check out the contributing guidelines
Development
Testing with the continuous integration server
You can test Hydra::Works using the same process as our continuous integration server. To do that, run the default rake task which will download Solr and Fedora, start them, and run the tests for you.
rake
Testing manually
If you want to run the tests manually, first run solr and FCRepo. To start solr:
solr_wrapper -v -d solr/config/ -n hydra-test -p 8985
To start FCRepo, open another shell and run:
fcrepo_wrapper -v -p 8986 --no-jms
Note you won't find these ports mentioned in this codebase, as testing behavior is inherited from ActiveFedora.
Now you’re ready to run the tests. In the directory where hydra-works is installed, run:
rake works:spec
Acknowledgments
This software has been developed by and is brought to you by the Samvera community. Learn more at the Samvera website.