Hybag
A Hydra gem for adding BagIt functionality to ActiveFedora models.
Installation
Add this line to your application's Gemfile:
gem 'hybag'
And then execute:
$ bundle
Or install it yourself as:
$ gem install hybag
Usage
Include the module in ActiveFedora models you'd like to be baggable
class TestClass < ActiveFedora::Base
include Hybag::Baggable
end
To convert an exported bag back to a model
NOTE: Right now for this to work there must be datastreams defined on the discovered model which match the metadata datastream IDs as tag files and content datastream IDs as data files. This means for a descMetadata datastream to be populated bag_root/descMetadata.* (where * is the extension) must exist.
result = Hybag.ingest(BagIt::Bag.new("/path/to/bag"))
result.class # => Model in fedora/rels-ext.rdf (preferred) or hybag.yml in bag root. More info below.
result.persisted? # => false
Configuration
Determining the model name.
Currently the model name is determined from the bag's fedora/rels-ext.rdf file (which Hybag::Baggable exports) or is configurable via a block as shown before
bag = Bagit::Bag.new("/path/to/bag")
test_class = Hybag.ingest(bag) do |ingester|
ingester.bag == bag # => true
ingester.model_name = "ActiveFedora::Base"
end
test_class.class # => ActiveFedora::Base
Examples
Write the item to disk in rails_root/tmp/bags/filler/pid
test_class = TestClass.new.write_bag('filler')
Delete a bag that was written already
test_class.delete_bag
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request