Skip to content

Setup Valkyrie Prototype: Installing Valkyrie

FCRodriguez7 edited this page Sep 13, 2019 · 11 revisions

Valkyrie

Installation

To your application's Gemfile add this line:
gem ‘valkyrie’ And then execute:

  1. bundle
  2. bin/rails valkyrie_engine:install:migrations && bin/rails db:migrate

Configure Adapters

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 

Configure Initializers

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: