SpeedyAF
This gem provides two mixins and a presenter designed to speed up ActiveFedora-based discovery and display operations.
This gem depends only upon ActiveFedora, not on Hydra or HydraHead
Table of Contents
- Classes and Mixins
- Installation
- Help
- Known Issues
- Acknowledgments
Classes and Mixins
OrderedAggregationIndex
This mixin adds an indexed_ordered_aggregation(name)
class method that, in turn, adds two methods
to the including class.
class Container < ActiveFedora::Base
include ActiveFedora::Associations
include SpeedyAF::OrderedAggregationIndex
ordered_aggregation :items, class_name: 'Item', through: :list_source
indexed_ordered_aggregation :items
end
In the example above, those two methods are indexed_ordered_items
and indexed_ordered_item_ids
. They
return the same data as the standard ordered_items
and ordered_item_ids
, respectively, but rely more
on Solr and less on the Fedora repository. The _items
variant returns a lazy enumerator that yields
target objects instead of an ActiveFedora::Orders::TargetProxy
, but the effect is similar.
IndexedContent
When mixed into an ActiveFedora::File
descendant, it will index the resource's full content to Solr
on save. This allows the Base
to load it up without hitting Fedora.
Base
SpeedyAF::Base
is designed to load everything it can about an ActiveFedora object from Solr,
transparently lazy-loading and delegating calls to the underlying Fedora object only when necessary.
It casts indexed attributes to their correct types, loads both indexed and unindexed subresources
(See IndexedContent
), and responds to most reflection accessors with another
Base
instance containing proxies for the desired objects.
A presenter (or array of presenters) can be instantiated by calling:
SpeedyAF::Base.find(item_pid)
or
SpeedyAF::Base.where(solr_query)
See the spec tests for details.
Installation
Add this line to your application's Gemfile:
gem 'speedy_af'
And then execute:
$ bundle install
Or install it yourself via:
$ gem install speedy_af
Help
If you have questions or need help, please email the Hydra community tech list or stop by the #dev channel in the Hydra community Slack team:
Known Issues
-
Base
currently tries to grab all relevant rows from Solr at once. Future releases will be more mindful of both local resources and Solr request limits. -
Base
may not play nicely with language-tagged RDF literals, as ActiveFedora does not currently index/encode the language tag into Solr.
Acknowledgments
This software has been developed by and is brought to you by the Hydra community. Learn more at the Project Hydra website.