Project

hybag

0.0
No commit activity in last 3 years
No release in over 3 years
A Hydra gem for adding BagIt functionality to ActiveFedora models.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.3
>= 0
>= 0
>= 0
>= 0

Runtime

 Project Readme

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

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request