This library implements the M3 specifications found in Houndstooth for Hyrax and other Samvera repository systems. It is able to read an M3 schema along with a profile YAML file and provides a graphical interface for editing the classes, contexts, mappings and properties found with in. It then provides hooks to the various pieces of Hyrax and similar Rails based systems to in order to assign contexts to Admin Sets, create and modify works and have all the properties of that work defined dynamically by users during run time. Work Types must exists in code (there is a work type generator), but all properties within can be edited dynamically by the library and are stored as data.
Overview/intro to flex graphic Note that Flexible Metadata for FileSets and Collections is currently not supported.
Add this line to your application's Gemfile:
gem 'allinson_flex', git: 'https://github.com/samvera-labs/allinson_flex.git'
And then execute:
$ bundle install
$ rails generate allinson_flex:install
$ rails db:migrate
AllinsonFlex uses webpacker and React JS (via the react-rails gem).
Please run the following if they are not already installed in your application. Note: If running a docker container, these need to be installed outside of the container in order to find the github ssh links.
$ rails webpacker:install
$ rails webpacker:install:react
$ rails generate react:install
Add to app/assets/stylesheets/application.css
*= require allinson_flex/application
and to app/assets/javascripts/application.js
//= require allinson_flex/application
Open the app in a browser and navigate to the Hyrax Dashboard > Metadata Profiles and click Import Profile. You can select the example profile in config/metadata_profile/hyrax.yaml
The work type installer can run over existing work models or generate new ones.
Add or modify all existing work types, based on Hyrax curation concerns or Dynamic Shemas:
$ rails generate allinson_flex:works
To run the generator against specific models, pass the command a model_name argument like:
$ rails generate allinson_flex:works Image
You can pass it multiple arguments for mulitple models, like:
$ rails generate allinson_flex:works Image Book GenericWork
Accept the overwrite when requested:
Overwrite /app/samvera/hyrax-webapp/app/views/hyrax/base/_attribute_rows.html.erb? (enter "h" for help) [Ynaqdhm]
You must restart rails after generating work classes.
See CONTRIBUTING.md for contributing guidelines.
We encourage everyone to help improve this project. Bug reports and pull requests are welcome on GitHub at https://github.com/samvera-labs/allinson_flex.
This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
All Contributors should have signed the Hydra Contributor License Agreement (CLA)
Questions can be sent to [email protected]. Please make sure to include "AllinsonFlex" in the subject line of your email.
The gem is available as open source under the terms of the Apache 2.0 License.
We use SemVer for versioning. For the versions available, see the tags on this repository.
From the beginning of the Samvera community to her sudden passing in 2020, Julie Allinson (@geekscruff) was a strong presence in the Samvera community. Always ready to lend a hand or to share knowledge, she embodied so much of what makes this community work. This effort, the last big project she was involved in, was the culmination not just of her time as a developer but the combination of her work as a metadata specialist. It was the evolution of dog biscuits, her work in the m3 group and several other projects she had lead or been involved in. She was an incredible bright star and we name this gem in remembrance of her.
- Indiana University - This work was initially commissioned for the ESSI project. We will always be grateful for their patience and the opportunity to take a hard swing at such a big set of challenges.