-
Notifications
You must be signed in to change notification settings - Fork 1
Setup Valkyrie Prototype: Installing Valkyrie
To your application's Gemfile add this line:
gem ‘valkyrie’
And then execute:
bundle
bin/rails valkyrie_engine:install:migrations && bin/rails db:migrate
Create the following files: config/valkyrie.yml
config/initializers/valkyrie.rb
and app/models/indexers/common_schema_indexer.rb
The code in config/valkyrie.yml
defines which metadata and storage adapter valkyrie uses in each environment.
The following code, is what is that file:
development:
metadata_adapter: postgres
storage_adapter: disk
test:
metadata_adapter: memory
storage_adapter: memory
production:
metadata_adapter: memory
storage_adapter: memory
The code in the valkyrie.rb is the initializer that registers metadata adapters and storage adapters.
The initializer config/initializers/valkyrie.rb registers three Valkyrie::MetadataAdapter
instance for storing metadata:
- :postgres which stores metadata in a PostgreSQL database.
Valkyrie::Persistence::Postgres::MetadataAdapter.new,
:postgres
)
- :memory which stores metadata in an in-memory cache
Valkyrie::Persistence::Memory::MetadataAdapter.new,
:memory
)
- :solr which stores metadata in a Solr Index in a custom
resource_indexer
Valkyrie::MetadataAdapter.register(
Valkyrie::Persistence::Solr::MetadataAdapter.new(
connection: connection,
resource_indexer: Valkyrie::Persistence::Solr::CompositeIndexer.new(
Valkyrie::Indexers::AccessControlsIndexer,
Indexers::CommonSchemaIndexer
)
),
:solr
)
Valkyrie::MetadataAdapter.register(
Valkyrie::AdapterContainer.new(
persister: Valkyrie::Persistence::CompositePersister.new(
Valkyrie.config.metadata_adapter.persister,
Valkyrie::MetadataAdapter.find(:solr).persister
),
query_service: Valkyrie.config.metadata_adapter.query_service
),
:my_composite_persister
)
Add for connection = RSolr.connect :url => 'http://127.0.0.1:8983/solr/< Core_Name >'
to config/initializers/valkyrie.rb
The CommonSchemaIndexer(app/models/indexers/Common_Schema_Indexer.rb) must provide a to_solr
method:
def to_solr
return {} unless decorated_resource.try(:human_readable_type)
{
xxx_ssi: decorated_resource.xxx,
}
end
The initializer config/initializers/valkyrie.rb also registers two Valkyrie::StorageAdapter
instance:
- :memory which stores files in an in-memory cache
- :disk which stores files on disk
More information: