Configuration
The primary configuration for ArchivesSpace is done in the config/config.rb file. By default, this file contains the default settings, which are indicated by commented out lines ( indicated by the ”#” in the file ). You can adjust these settings by adding new lines that change the default and restarting ArchivesSpace. Be sure that your new settings are not commented out ( i.e. do NOT start with a ”#” ), otherwise the settings will not take effect.
Commonly changed settings
Section titled “Commonly changed settings”Database config
Section titled “Database config”:db_url
Section titled “:db_url”Set your database name and credentials. The default specifies that the embedded database should be used. It is recommended to use a MySQL database instead of the embedded database. For more info, see Using MySQL
This is an example of specifying MySQL credentials:
AppConfig[:db_url] = "jdbc:mysql://127.0.0.1:3306/aspace?useUnicode=true&characterEncoding=UTF-8&user=as&password=as123"
:db_max_connections
Section titled “:db_max_connections”Set the maximum number of database connections used by the application. Default is derived from the number of indexer threads.
AppConfig[:db_max_connections] = proc { 20 + (AppConfig[:indexer_thread_count] * 2) }
URLs for ArchivesSpace components
Section titled “URLs for ArchivesSpace components”Set the ArchivesSpace backend port. The backend listens on port 8089 by default.
AppConfig[:backend_url] = "http://localhost:8089"
Set the ArchivesSpace staff interface (frontend) port. The staff interface listens on port 8080 by default.
AppConfig[:frontend_url] = "http://localhost:8080"
Set the ArchivesSpace public interface port. The public interface listens on port 8081 by default.
AppConfig[:public_url] = "http://localhost:8081"
Set the ArchivesSpace OAI server port. The OAI server listens on port 8082 by default.
AppConfig[:oai_url] = "http://localhost:8082"
Set the ArchivesSpace Solr index port. The Solr server listens on port 8090 by default.
AppConfig[:solr_url] = "http://localhost:8090"
Set the ArchivesSpace indexer port. The indexer listens on port 8091 by default.
AppConfig[:indexer_url] = "http://localhost:8091"
Set the ArchivesSpace API documentation port. The API documentation listens on port 8888 by default.
AppConfig[:docs_url] = "http://localhost:8888"
Enabling ArchivesSpace components
Section titled “Enabling ArchivesSpace components”Enable or disable specific componenets by setting the following settings to true or false (defaults to true):
AppConfig[:enable_backend] = trueAppConfig[:enable_frontend] = trueAppConfig[:enable_public] = trueAppConfig[:enable_solr] = trueAppConfig[:enable_indexer] = trueAppConfig[:enable_docs] = trueAppConfig[:enable_oai] = true
Application logging
Section titled “Application logging”By default, all logging will be output on the screen while the archivesspace command
is running. When running as a daemon/service, this is put into a file in
logs/archivesspace.out
. You can route log output to a different file per component by changing the log value to
a filepath that archivesspace has write access to.
You can also set the logging level for each component. Valid values are:
debug
(everything)info
warn
error
fatal
(severe only)
AppConfig[:frontend_log]
Section titled “AppConfig[:frontend_log]”File for log output for the frontend (staff interface). Set to “default” to route log output to archivesspace.out.
#AppConfig[:frontend_log_level]
Section titled “#AppConfig[:frontend_log_level]”Logging level for the frontend.
AppConfig[:backend_log]
Section titled “AppConfig[:backend_log]”File for log output for the backend. Set to “default” to route log output to archivesspace.out.
#AppConfig[:backend_log_level]
Section titled “#AppConfig[:backend_log_level]”Logging level for the backend.
AppConfig[:pui_log]
Section titled “AppConfig[:pui_log]”File for log output for the public UI. Set to “default” to route log output to archivesspace.out.
#AppConfig[:pui_log_level]
Section titled “#AppConfig[:pui_log_level]”Logging level for the public UI.
AppConfig[:indexer_log]
Section titled “AppConfig[:indexer_log]”File for log output for the indexer. Set to “default” to route log output to archivesspace.out.
#AppConfig[:indexer_log_level]
Section titled “#AppConfig[:indexer_log_level]”Logging level for the indexer.
Database logging
Section titled “Database logging”AppConfig[:db_debug_log]
Section titled “AppConfig[:db_debug_log]”Set to true to log all SQL statements. Note that this will have a performance impact!
AppConfig[:db_debug_log] = false
AppConfig[:mysql_binlog]
Section titled “AppConfig[:mysql_binlog]”Set to true if you have enabled MySQL binary logging.
AppConfig[:mysql_binlog] = false
Solr backups
Section titled “Solr backups”AppConfig[:solr_backup_schedule]
Section titled “AppConfig[:solr_backup_schedule]”Set Solr back up schedule. By default, Solr backups will run at midnight. See https://crontab.guru/ for information about the schedule syntax.
AppConfig[:solr_backup_schedule] = "0 * * * *"
AppConfig[:solr_backup_number_to_keep]
Section titled “AppConfig[:solr_backup_number_to_keep]”Number of Solr backups to keep (default = 1)
AppConfig[:solr_backup_number_to_keep] = 1
AppConfig[:solr_backup_directory]
Section titled “AppConfig[:solr_backup_directory]”Directory to store Solr backups.
AppConfig[:solr_backup_directory] = proc { File.join(AppConfig[:data_directory], "solr_backups") }
Default Solr params
Section titled “Default Solr params”AppConfig[:solr_params]
Section titled “AppConfig[:solr_params]”Add default solr params.
A simple example: use AND for search:
AppConfig[:solr_params] = { "q.op" => "AND" }
A more complex example: set the boost query value (bq) to boost the relevancy for the query string in the title, set the phrase fields parameter (pf) to boost the relevancy for the title when the query terms are in close proximity to each other, and set the phrase slop (ps) parameter for the pf parameter to indicate how close the proximity should be:
AppConfig[:solr_params] = { "bq" => proc { "title:\"#{@query_string}\"*" }, "pf" => 'title^10', "ps" => 0,}
Language
Section titled “Language”AppConfig[:locale]
Section titled “AppConfig[:locale]”Set the application’s language (see the .yml files in https://github.com/archivesspace/archivesspace/tree/master/common/locales for a list of available locale codes). Default is English (:en):
AppConfig[:locale] = :en
Plugin registration
Section titled “Plugin registration”AppConfig[:plugins]
Section titled “AppConfig[:plugins]”Plug-ins to load. They will load in the order specified.
AppConfig[:plugins] = ['local', 'lcnaf']
Thread count
Section titled “Thread count”AppConfig[:job_thread_count]
Section titled “AppConfig[:job_thread_count]”The number of concurrent threads available to run background jobs. Introduced because long running jobs were blocking the queue. Resist the urge to set this to a big number!
AppConfig[:job_thread_count] = 2
OAI configuration options
Section titled “OAI configuration options”AppConfig[:oai_proxy_url]
Section titled “AppConfig[:oai_proxy_url]”TODO - Needs more documentation
AppConfig[:oai_proxy_url] = 'http://your-public-oai-url.example.com'
NOTE: As of version 2.5.2, the following parameters (oai_repository_name, oai_record_prefix, and oai_admin_email) have been deprecated. They should be set in the Staff User Interface. To set them, select the System menu in the Staff User Interface and then select Manage OAI-PMH Settings. These three settings are at the top of the page in the General Settings section. These settings will be completely removed from the config file when version 2.6.0 is released.
AppConfig[:oai_repository_name]
Section titled “AppConfig[:oai_repository_name]”AppConfig[:oai_repository_name] = 'ArchivesSpace OAI Provider'
AppConfig[:oai_record_prefix]
Section titled “AppConfig[:oai_record_prefix]”AppConfig[:oai_record_prefix] = 'oai:archivesspace'
AppConfig[:oai_admin_email]
Section titled “AppConfig[:oai_admin_email]”AppConfig[:oai_admin_email] = 'admin@example.com'
AppConfig[:oai_sets]
Section titled “AppConfig[:oai_sets]”In addition to the sets based on level of description, you can define OAI Sets based on repository codes and/or sponsors as follows:
AppConfig[:oai_sets] = { 'repository_set' => { :repo_codes => ['hello626'], :description => "A set of one or more repositories", },
'sponsor_set' => { :sponsors => ['The_Sponsor'], :description => "A set of one or more sponsors", },}
Other less commonly changed settings
Section titled “Other less commonly changed settings”Default admin password
Section titled “Default admin password”AppConfig[:default_admin_password]
Section titled “AppConfig[:default_admin_password]”Set default admin password. Default password is “admin”.
#AppConfig[:default_admin_password] = "admin"
Data directories
Section titled “Data directories”AppConfig[:data_directory]
Section titled “AppConfig[:data_directory]”If you run ArchivesSpace using the standard scripts (archivesspace.sh, archivesspace.bat or as a Windows service), the value of :data_directory is automatically set to be the “data” directory of your ArchivesSpace distribution. You don’t need to change this value unless you specifically want ArchivesSpace to put its data files elsewhere.
AppConfig[:data_directory] = File.join(Dir.home, "ArchivesSpace")
AppConfig[:backup_directory]
Section titled “AppConfig[:backup_directory]”TODO - Needs more documentation
AppConfig[:backup_directory] = proc { File.join(AppConfig[:data_directory], "demo_db_backups") }
AppConfig[:solr_index_directory]
Section titled “AppConfig[:solr_index_directory]”TODO - Needs more documentation
AppConfig[:solr_index_directory] = proc { File.join(AppConfig[:data_directory], "solr_index") }
AppConfig[:solr_home_directory]
Section titled “AppConfig[:solr_home_directory]”TODO - Needs more documentation
AppConfig[:solr_home_directory] = proc { File.join(AppConfig[:data_directory], "solr_home") }
Solr defaults
Section titled “Solr defaults”AppConfig[:solr_indexing_frequency_seconds]
Section titled “AppConfig[:solr_indexing_frequency_seconds]”TODO - Needs more documentation
AppConfig[:solr_indexing_frequency_seconds] = 30
AppConfig[:solr_facet_limit]
Section titled “AppConfig[:solr_facet_limit]”TODO - Needs more documentation
AppConfig[:solr_facet_limit] = 100
AppConfig[:default_page_size]
Section titled “AppConfig[:default_page_size]”TODO - Needs more documentation
AppConfig[:default_page_size] = 10
AppConfig[:max_page_size]
Section titled “AppConfig[:max_page_size]”TODO - Needs more documentation
AppConfig[:max_page_size] = 250
Cookie prefix
Section titled “Cookie prefix”AppConfig[:cookie_prefix]
Section titled “AppConfig[:cookie_prefix]”A prefix added to cookies used by the application. Change this if you’re running more than one instance of ArchivesSpace on the same hostname (i.e. multiple instances on different ports). Default is “archivesspace”.
AppConfig[:cookie_prefix] = "archivesspace"
Indexer settings
Section titled “Indexer settings”The periodic indexer can run using multiple threads to take advantage of multiple CPU cores. By setting these two options, you can control how many CPU cores are used, and the amount of memory that will be consumed by the indexing process (more cores and/or more records per thread means more memory used).
AppConfig[:indexer_records_per_thread]
Section titled “AppConfig[:indexer_records_per_thread]”AppConfig[:indexer_records_per_thread] = 25
AppConfig[:indexer_thread_count]
Section titled “AppConfig[:indexer_thread_count]”AppConfig[:indexer_thread_count] = 4
AppConfig[:indexer_solr_timeout_seconds]
Section titled “AppConfig[:indexer_solr_timeout_seconds]”TODO - Needs more documentation
AppConfig[:indexer_solr_timeout_seconds] = 300
PUI Indexer Settings
Section titled “PUI Indexer Settings”AppConfig[:pui_indexer_enabled]
Section titled “AppConfig[:pui_indexer_enabled]”TODO - Needs more documentation
AppConfig[:pui_indexer_enabled] = true
AppConfig[:pui_indexing_frequency_seconds]
Section titled “AppConfig[:pui_indexing_frequency_seconds]”TODO - Needs more documentation
AppConfig[:pui_indexing_frequency_seconds] = 30
AppConfig[:pui_indexer_records_per_thread]
Section titled “AppConfig[:pui_indexer_records_per_thread]”TODO - Needs more documentation
AppConfig[:pui_indexer_records_per_thread] = 25
AppConfig[:pui_indexer_thread_count]
Section titled “AppConfig[:pui_indexer_thread_count]”TODO - Needs more documentation
AppConfig[:pui_indexer_thread_count] = 1
Index state
Section titled “Index state”AppConfig[:index_state_class]
Section titled “AppConfig[:index_state_class]”Set to ‘IndexStateS3’ for amazon s3
TODO - Needs more documentation
AppConfig[:index_state_class] = 'IndexState'
AppConfig[:index_state_s3]
Section titled “AppConfig[:index_state_s3]”Store indexer state in amazon s3 (optional) NOTE: s3 charges for read / update requests and the pui indexer is continually writing to state files so you may want to increase pui_indexing_frequency_seconds
TODO - Needs more documentation
AppConfig[:index_state_s3] = { region: ENV.fetch("AWS_REGION"), aws_access_key_id: ENV.fetch("AWS_ACCESS_KEY_ID"), aws_secret_access_key: ENV.fetch("AWS_SECRET_ACCESS_KEY"), bucket: ENV.fetch("AWS_ASPACE_BUCKET"), prefix: proc { "#{AppConfig[:cookie_prefix]}_" },}
Misc. database options
Section titled “Misc. database options”AppConfig[:allow_other_unmapped]
Section titled “AppConfig[:allow_other_unmapped]”TODO - Needs more documentation
AppConfig[:allow_other_unmapped] = false
AppConfig[:db_url_redacted]
Section titled “AppConfig[:db_url_redacted]”TODO - Needs more documentation
AppConfig[:db_url_redacted] = proc { AppConfig[:db_url].gsub(/(user|password)=(.*?)(&|$)/, '\1=[REDACTED]\3') }
AppConfig[:demo_db_backup_schedule]
Section titled “AppConfig[:demo_db_backup_schedule]”TODO - Needs more documentation
AppConfig[:demo_db_backup_schedule] = "0 4 * * *"
AppConfig[:allow_unsupported_database]
Section titled “AppConfig[:allow_unsupported_database]”TODO - Needs more documentation
AppConfig[:allow_unsupported_database] = false
AppConfig[:allow_non_utf8_mysql_database]
Section titled “AppConfig[:allow_non_utf8_mysql_database]”TODO - Needs more documentation
AppConfig[:allow_non_utf8_mysql_database] = false
AppConfig[:demo_db_backup_number_to_keep] = 7
Section titled “AppConfig[:demo_db_backup_number_to_keep] = 7”TODO - Needs more documentation
AppConfig[:demo_db_backup_number_to_keep] = 7
Proxy URLs
Section titled “Proxy URLs”If you are serving user-facing applications via proxy (i.e., another domain or port, or via https, or for a prefix) it is recommended that you record those URLs in your configuration
AppConfig[:frontend_proxy_url] = proc { AppConfig[:frontend_url] }
Section titled “AppConfig[:frontend_proxy_url] = proc { AppConfig[:frontend_url] }”Proxy URL for the frontend (staff interface)
AppConfig[:frontend_proxy_url] = proc { AppConfig[:frontend_url] }
AppConfig[:public_proxy_url]
Section titled “AppConfig[:public_proxy_url]”Proxy URL for the public interface
AppConfig[:public_proxy_url] = proc { AppConfig[:public_url] }
AppConfig[:frontend_proxy_prefix]
Section titled “AppConfig[:frontend_proxy_prefix]”Don’t override this setting unless you know what you’re doing
AppConfig[:frontend_proxy_prefix] = proc { "#{URI(AppConfig[:frontend_proxy_url]).path}/".gsub(%r{/+$}, "/") }
AppConfig[:public_proxy_prefix]
Section titled “AppConfig[:public_proxy_prefix]”Don’t override this setting unless you know what you’re doing
AppConfig[:public_proxy_prefix] = proc { "#{URI(AppConfig[:public_proxy_url]).path}/".gsub(%r{/+$}, "/") }
Enable component applications
Section titled “Enable component applications”Setting any of these false will prevent the associated applications from starting. Temporarily disabling the frontend and public UIs and/or the indexer may help users who are running into memory-related issues during migration.
AppConfig[:enable_backend]
Section titled “AppConfig[:enable_backend]”AppConfig[:enable_backend] = true
AppConfig[:enable_frontend]
Section titled “AppConfig[:enable_frontend]”AppConfig[:enable_frontend] = true
AppConfig[:enable_public]
Section titled “AppConfig[:enable_public]”AppConfig[:enable_public] = true
AppConfig[:enable_solr]
Section titled “AppConfig[:enable_solr]”AppConfig[:enable_solr] = true
AppConfig[:enable_indexer]
Section titled “AppConfig[:enable_indexer]”AppConfig[:enable_indexer] = true
AppConfig[:enable_docs]
Section titled “AppConfig[:enable_docs]”AppConfig[:enable_docs] = true
AppConfig[:enable_oai]
Section titled “AppConfig[:enable_oai]”AppConfig[:enable_oai] = true
Jetty shutdown
Section titled “Jetty shutdown”Some use cases want the ability to shutdown the Jetty service using Jetty’s
ShutdownHandler, which allows a POST request to a specific URI to signal
server shutdown. The prefix for this URI path is set to /xkcd
to reduce the
possibility of a collision in the path configuration. So, full path would be
/xkcd/shutdown?token={randomly generated password}
The launcher creates a password to use this, which is stored in the data directory. This is not turned on by default.
AppConfig[:use_jetty_shutdown_handler]
Section titled “AppConfig[:use_jetty_shutdown_handler]”AppConfig[:use_jetty_shutdown_handler] = false
AppConfig[:jetty_shutdown_path]
Section titled “AppConfig[:jetty_shutdown_path]”AppConfig[:jetty_shutdown_path] = "/xkcd"
Managing multile backend instances
Section titled “Managing multile backend instances”If you have multiple instances of the backend running behind a load balancer, list the URL of each backend instance here. This is used by the real-time indexing, which needs to connect directly to each running instance.
By default we assume you’re not using a load balancer, so we just connect to the regular backend URL.
AppConfig[:backend_instance_urls]
Section titled “AppConfig[:backend_instance_urls]”AppConfig[:backend_instance_urls] = proc { [AppConfig[:backend_url]] }
TODO - Needs more documentation
AppConfig[:frontend_theme]
Section titled “AppConfig[:frontend_theme]”AppConfig[:frontend_theme] = "default"
AppConfig[:public_theme]
Section titled “AppConfig[:public_theme]”AppConfig[:public_theme] = "default"
Session expiration
Section titled “Session expiration”AppConfig[:session_expire_after_seconds]
Section titled “AppConfig[:session_expire_after_seconds]”Sessions marked as expirable will timeout after this number of seconds of inactivity
AppConfig[:session_expire_after_seconds] = 3600
AppConfig[:session_nonexpirable_force_expire_after_seconds]
Section titled “AppConfig[:session_nonexpirable_force_expire_after_seconds]”Sessions marked as non-expirable will eventually expire too, but after a longer period.
AppConfig[:session_nonexpirable_force_expire_after_seconds] = 604800
System usernames
Section titled “System usernames”TODO - Needs more documentation
AppConfig[:search_username]
Section titled “AppConfig[:search_username]”AppConfig[:search_username] = "search_indexer"
AppConfig[:public_username]
Section titled “AppConfig[:public_username]”AppConfig[:public_username] = "public_anonymous"
AppConfig[:staff_username]
Section titled “AppConfig[:staff_username]”AppConfig[:staff_username] = "staff_system"
Authentication sources
Section titled “Authentication sources”TODO - Needs more documentation
AppConfig[:authentication_sources]
Section titled “AppConfig[:authentication_sources]”AppConfig[:authentication_sources] = []
Misc. backlog and snapshot settings
Section titled “Misc. backlog and snapshot settings”AppConfig[:realtime_index_backlog_ms]
Section titled “AppConfig[:realtime_index_backlog_ms]”TODO - Needs more documentation
AppConfig[:realtime_index_backlog_ms] = 60000
AppConfig[:notifications_backlog_ms]
Section titled “AppConfig[:notifications_backlog_ms]”TODO - Needs more documentation
AppConfig[:notifications_backlog_ms] = 60000
AppConfig[:notifications_poll_frequency_ms]
Section titled “AppConfig[:notifications_poll_frequency_ms]”TODO - Needs more documentation
AppConfig[:notifications_poll_frequency_ms] = 1000
AppConfig[:max_usernames_per_source]
Section titled “AppConfig[:max_usernames_per_source]”TODO - Needs more documentation
AppConfig[:max_usernames_per_source] = 50
AppConfig[:demodb_snapshot_flag]
Section titled “AppConfig[:demodb_snapshot_flag]”TODO - Needs more documentation
AppConfig[:demodb_snapshot_flag] = proc { File.join(AppConfig[:data_directory], "create_demodb_snapshot.txt") }
Report Configuration
Section titled “Report Configuration”AppConfig[:report_page_layout]
Section titled “AppConfig[:report_page_layout]”Uses valid values for the CSS3 @page directive’s size property: http://www.w3.org/TR/css3-page/#page-size-prop
AppConfig[:report_page_layout] = "letter"
AppConfig[:report_pdf_font_paths]
Section titled “AppConfig[:report_pdf_font_paths]”TODO - Needs more documentation
AppConfig[:report_pdf_font_paths] = proc { ["#{AppConfig[:backend_url]}/reports/static/fonts/dejavu/DejaVuSans.ttf"] }
AppConfig[:report_pdf_font_family]
Section titled “AppConfig[:report_pdf_font_family]”TODO - Needs more documentation
AppConfig[:report_pdf_font_family] = "\"DejaVu Sans\", sans-serif"
Plugins directory
Section titled “Plugins directory”AppConfig[:plugins_directory]
Section titled “AppConfig[:plugins_directory]”By default, the plugins directory will be in your ASpace Home. If you want to override that, update this with an absolute path
AppConfig[:plugins_directory] = "plugins"
Feedback
Section titled “Feedback”AppConfig[:feedback_url]
Section titled “AppConfig[:feedback_url]”URL to direct the feedback link. You can remove this from the footer by making the value blank.
AppConfig[:feedback_url] = "http://archivesspace.org/contact"
User registration
Section titled “User registration”AppConfig[:allow_user_registration]
Section titled “AppConfig[:allow_user_registration]”Allow an unauthenticated user to create an account
AppConfig[:allow_user_registration] = true
Help Configuration
Section titled “Help Configuration”AppConfig[:help_enabled]
Section titled “AppConfig[:help_enabled]”TODO - Needs more documentation
AppConfig[:help_enabled] = true
AppConfig[:help_url]
Section titled “AppConfig[:help_url]”TODO - Needs more documentation
`AppConfig[:help_url] = “https://archivesspace.atlassian.net/wiki/spaces/ArchivesSpaceUserManual/overview”“
AppConfig[:help_topic_base_url]
Section titled “AppConfig[:help_topic_base_url]”TODO - Needs more documentation
`AppConfig[:help_topic_base_url] = “https://archivesspace.atlassian.net/wiki/spaces/ArchivesSpaceUserManual/pages/““
Shared storage
Section titled “Shared storage”AppConfig[:shared_storage]
Section titled “AppConfig[:shared_storage]”AppConfig[:shared_storage] = proc { File.join(AppConfig[:data_directory], "shared") }
Background jobs
Section titled “Background jobs”AppConfig[:job_file_path]
Section titled “AppConfig[:job_file_path]”Formerly known as :import_job_path
TODO - Needs more documentation
AppConfig[:job_file_path] = proc { AppConfig.has_key?(:import_job_path) ? AppConfig[:import_job_path] : File.join(AppConfig[:shared_storage], "job_files") }
AppConfig[:job_poll_seconds]
Section titled “AppConfig[:job_poll_seconds]”TODO - Needs more documentation
AppConfig[:job_poll_seconds] = proc { AppConfig.has_key?(:import_poll_seconds) ? AppConfig[:import_poll_seconds] : 5 }
AppConfig[:job_timeout_seconds]
Section titled “AppConfig[:job_timeout_seconds]”TODO - Needs more documentation
AppConfig[:job_timeout_seconds] = proc { AppConfig.has_key?(:import_timeout_seconds) ? AppConfig[:import_timeout_seconds] : 300 }
AppConfig[:jobs_cancelable]
Section titled “AppConfig[:jobs_cancelable]”By default, only allow jobs to be cancelled if we’re running against MySQL (since we can rollback)
AppConfig[:jobs_cancelable] = proc { (AppConfig[:db_url] != AppConfig.demo_db_url).to_s }
Locations
Section titled “Locations”AppConfig[:max_location_range]
Section titled “AppConfig[:max_location_range]”TODO - Needs more documentation
AppConfig[:max_location_range] = 1000
Schema Info check
Section titled “Schema Info check”AppConfig[:ignore_schema_info_check]
Section titled “AppConfig[:ignore_schema_info_check]”ASpace backend will not start if the db’s schema_info version is not set correctly for this version of ASPACE. This is to ensure that all the migrations have run and completed before starting the app. You can override this check here. Do so at your own peril.
AppConfig[:ignore_schema_info_check] = false
Demo data
Section titled “Demo data”AppConfig[:demo_data_url]
Section titled “AppConfig[:demo_data_url]”This is a URL that points to some demo data that can be used for testing, teaching, etc. To use this, set an OS environment variable of ASPACE_DEMO = true
AppConfig[:demo_data_url] = "https://s3-us-west-2.amazonaws.com/archivesspacedemo/latest-demo-data.zip"
External IDs
Section titled “External IDs”AppConfig[:show_external_ids]
Section titled “AppConfig[:show_external_ids]”Expose external ids in the frontend
AppConfig[:show_external_ids] = false
Jetty request/response buffer
Section titled “Jetty request/response buffer”Set the allowed size of the request/response header that Jetty will accept (anything bigger gets a 403 error). Note if you want to jack this size up, you will also have to configure your Nginx/Apache as well if you’re using that
AppConfig[:jetty_response_buffer_size_bytes]
Section titled “AppConfig[:jetty_response_buffer_size_bytes]”AppConfig[:jetty_response_buffer_size_bytes] = 64 * 1024
AppConfig[:jetty_request_buffer_size_bytes]
Section titled “AppConfig[:jetty_request_buffer_size_bytes]”AppConfig[:jetty_request_buffer_size_bytes] = 64 * 1024
Container management configuration fields
Section titled “Container management configuration fields”AppConfig[:container_management_barcode_length]
Section titled “AppConfig[:container_management_barcode_length]”Defines global and repo-level barcode validations (validating on length only). Barcodes that have either no value, or a value between :min and :max, will validate on save. Set global constraints via :system_default, and use the repo_code value for repository-level constraints. Note that :system_default will always inherit down its values when possible.
AppConfig[:container_management_barcode_length] = {:system_default => {:min => 5, :max => 10}, 'repo' => {:min => 9, :max => 12}, 'other_repo' => {:min => 9, :max => 9} }
AppConfig[:container_management_extent_calculator]
Section titled “AppConfig[:container_management_extent_calculator]”Globally defines the behavior of the exent calculator. Use :report_volume (true/false) to define whether space should be reported in cubic or linear dimensions. Use :unit (:feet, :inches, :meters, :centimeters) to define the unit which the calculator reports extents in. Use :decimal_places to define how many decimal places the calculator should return.
Example:
AppConfig[:container_management_extent_calculator] = { :report_volume => true, :unit => :feet, :decimal_places => 3 }
Record inheritance in public interface
Section titled “Record inheritance in public interface”AppConfig[:record_inheritance]
Section titled “AppConfig[:record_inheritance]”Define the fields for a record type that are inherited from ancestors if they don’t have a value in the record itself. This is used in common/record_inheritance.rb and was developed to support the new public UI application. Note - any changes to record_inheritance config will require a reindex of pui records to take affect. To do this remove files from indexer_pui_state
AppConfig[:record_inheritance] = { :archival_object => { :inherited_fields => [ { :property => 'title', :inherit_directly => true }, { :property => 'component_id', :inherit_directly => false }, { :property => 'language', :inherit_directly => true }, { :property => 'dates', :inherit_directly => true }, { :property => 'extents', :inherit_directly => false }, { :property => 'linked_agents', :inherit_if => proc {|json| json.select {|j| j['role'] == 'creator'} }, :inherit_directly => false }, { :property => 'notes', :inherit_if => proc {|json| json.select {|j| j['type'] == 'accessrestrict'} }, :inherit_directly => true }, { :property => 'notes', :inherit_if => proc {|json| json.select {|j| j['type'] == 'scopecontent'} }, :inherit_directly => false }, { :property => 'notes', :inherit_if => proc {|json| json.select {|j| j['type'] == 'langmaterial'} }, :inherit_directly => false }, ] }}
To enable composite identifiers - added to the merged record in a property
\_composite_identifier
The values for :include_level
and :identifier_delimiter
shown here are the defaults
If :include_level
is set to true then level values (eg Series) will be included in \_composite_identifier
The :identifier_delimiter
is used when joining the four part identifier for resources
AppConfig[:record_inheritance][:archival_object][:composite_identifiers] = { :include_level => false, :identifier_delimiter => ' '}
To configure additional elements to be inherited use this pattern in your config
AppConfig[:record_inheritance][:archival_object][:inherited_fields] << { :property => 'linked_agents', :inherit_if => proc {|json| json.select {|j| j['role'] == 'subject'} }, :inherit_directly => true }
… or use this pattern to add many new elements at once
AppConfig[:record_inheritance][:archival_object][:inherited_fields].concat( [ { :property => 'subjects', :inherit_if => proc {|json| json.select {|j| ! j['_resolved']['terms'].select { |t| t['term_type'] == 'topical'}.empty? } }, :inherit_directly => true }, { :property => 'external_documents', :inherit_directly => false }, { :property => 'rights_statements', :inherit_directly => false }, { :property => 'instances', :inherit_directly => false }, ])
If you want to modify any of the default rules, the safest approach is to uncomment the entire default record_inheritance config and make your changes. For example, to stop scopecontent notes from being inherited into file or item records uncomment the entire record_inheritance default config above, and add a skip_if clause to the scopecontent rule, like this:
{ :property => 'notes', :skip_if => proc {|json| ['file', 'item'].include?(json['level']) }, :inherit_if => proc {|json| json.select {|j| j['type'] == 'scopecontent'} }, :inherit_directly => false },
PUI Configurations
Section titled “PUI Configurations”AppConfig[:pui_search_results_page_size]
Section titled “AppConfig[:pui_search_results_page_size]”AppConfig[:pui_search_results_page_size] = 10
AppConfig[:pui_branding_img]
Section titled “AppConfig[:pui_branding_img]”AppConfig[:pui_branding_img] = 'archivesspace.small.png'
AppConfig[:pui_block_referrer]
Section titled “AppConfig[:pui_block_referrer]”AppConfig[:pui_block_referrer] = true # patron privacy; blocks full 'referer' when going outside the domain
AppConfig[:pui_max_concurrent_pdfs]
Section titled “AppConfig[:pui_max_concurrent_pdfs]”The number of PDFs we’ll generate (in the background) at the same time.
PDF generation can be a little memory intensive for large collections, so we set this fairly low out of the box.
AppConfig[:pui_max_concurrent_pdfs] = 2
AppConfig[:pui_pdf_timeout]
Section titled “AppConfig[:pui_pdf_timeout]”You can set this to nil or zero to prevent a timeout
AppConfig[:pui_pdf_timeout] = 600
AppConfig[:pui_hide]
Section titled “AppConfig[:pui_hide]”AppConfig[:pui_hide] = {}
The following determine which ‘tabs’ are on the main horizontal menu:
AppConfig[:pui_hide][:repositories] = falseAppConfig[:pui_hide][:resources] = falseAppConfig[:pui_hide][:digital_objects] = falseAppConfig[:pui_hide][:accessions] = falseAppConfig[:pui_hide][:subjects] = falseAppConfig[:pui_hide][:agents] = falseAppConfig[:pui_hide][:classifications] = falseAppConfig[:pui_hide][:search_tab] = false
The following determine globally whether the various “badges” appear on the Repository page
can be overriden at repository level below (e.g.:
AppConfig[:repos][{repo_code}][:hide][:counts] = true
AppConfig[:pui_hide][:resource_badge] = falseAppConfig[:pui_hide][:record_badge] = true # hide by defaultAppConfig[:pui_hide][:digital_object_badge] = falseAppConfig[:pui_hide][:accession_badge] = falseAppConfig[:pui_hide][:subject_badge] = falseAppConfig[:pui_hide][:agent_badge] = falseAppConfig[:pui_hide][:classification_badge] = falseAppConfig[:pui_hide][:counts] = false
The following determines globally whether the ‘container inventory’ navigation tab/pill is hidden on resource/collection page
AppConfig[:pui_hide][:container_inventory] = false
AppConfig[:pui_requests_permitted_for_types]
Section titled “AppConfig[:pui_requests_permitted_for_types]”Determine when the request button is displayed
AppConfig[:pui_requests_permitted_for_types] = [:resource, :archival_object, :accession, :digital_object, :digital_object_component]
AppConfig[:pui_requests_permitted_for_containers_only]
Section titled “AppConfig[:pui_requests_permitted_for_containers_only]”Set to ‘true’ if you want to disable if there is no top container
AppConfig[:pui_requests_permitted_for_containers_only] = false
AppConfig[:pui_repos]
Section titled “AppConfig[:pui_repos]”Repository-specific examples. Replace {repo_code} with your repository code, i.e. ‘foo’ - note the lower-case
AppConfig[:pui_repos] = {}
Examples:
for a particular repository, only enable requests for certain record types (Note this configuration will override AppConfig[:pui_requests_permitted_for_types] for the repository)
AppConfig[:pui_repos]['foo'][:requests_permitted_for_types] = [:resource, :archival_object, :accession, :digital_object, :digital_object_component]
For a particular repository, disable request
AppConfig[:pui_repos]['foo'][:requests_permitted_for_containers_only] = true
Set the email address to send any repository requests:
AppConfig[:pui_repos]['foo'][:request_email] = {email address}
TODO - Needs more documentation here
AppConfig[:pui_repos]['foo'][:hide] = {}AppConfig[:pui_repos]['foo'][:hide][:counts] = true
AppConfig[:pui_display_deaccessions]
Section titled “AppConfig[:pui_display_deaccessions]”TODO - Needs more documentation
AppConfig[:pui_display_deaccessions] = true
AppConfig[:pui_page_actions_cite]
Section titled “AppConfig[:pui_page_actions_cite]”Enable / disable PUI resource/archival object page ‘cite’ action
AppConfig[:pui_page_actions_cite] = true
AppConfig[:pui_page_actions_bookmark]
Section titled “AppConfig[:pui_page_actions_bookmark]”Enable / disable PUI resource/archival object page ‘bookmark’ action
AppConfig[:pui_page_actions_bookmark] = true
AppConfig[:pui_page_actions_request]
Section titled “AppConfig[:pui_page_actions_request]”Enable / disable PUI resource/archival object page ‘request’ action
AppConfig[:pui_page_actions_request] = true
AppConfig[:pui_page_actions_print]
Section titled “AppConfig[:pui_page_actions_print]”Enable / disable PUI resource/archival object page ‘print’ action
AppConfig[:pui_page_actions_print] = true
AppConfig[:pui_enable_staff_link]
Section titled “AppConfig[:pui_enable_staff_link]”when a user is authenticated, add a link back to the staff interface from the specified record
AppConfig[:pui_enable_staff_link] = true
AppConfig[:pui_staff_link_mode]
Section titled “AppConfig[:pui_staff_link_mode]”by default, staff link will open record in staff interface in edit mode, change this to ‘readonly’ for it to open in readonly mode
AppConfig[:pui_staff_link_mode] = 'edit'
AppConfig[:pui_page_custom_actions]
Section titled “AppConfig[:pui_page_custom_actions]”Add page actions via the configuration
AppConfig[:pui_page_custom_actions] = []
Javascript action example:
AppConfig[:pui_page_custom_actions] << { 'record_type' => ['resource', 'archival_object'], # the jsonmodel type to show for 'label' => 'actions.do_something', # the I18n path for the action button 'icon' => 'fa-paw', # the font-awesome icon CSS class 'onclick_javascript' => 'alert("do something grand");',}
Hyperlink action example:
AppConfig[:pui_page_custom_actions] << { 'record_type' => ['resource', 'archival_object'], # the jsonmodel type to show for 'label' => 'actions.do_something', # the I18n path for the action button 'icon' => 'fa-paw', # the font-awesome icon CSS class 'url_proc' => proc {|record| 'http://example.com/aspace?uri='+record.uri},}
Form-POST action example:
AppConfig[:pui_page_custom_actions] << { 'record_type' => ['resource', 'archival_object'], # the jsonmodel type to show for 'label' => 'actions.do_something', # the I18n path for the action button 'icon' => 'fa-paw', # the font-awesome icon CSS class # 'post_params_proc' returns a hash of params which populates a form with hidden inputs ('name' => 'value') 'post_params_proc' => proc {|record| {'uri' => record.uri, 'display_string' => record.display_string} }, # 'url_proc' returns the URL for the form to POST to 'url_proc' => proc {|record| 'http://example.com/aspace?uri='+record.uri}, # 'form_id' as string to be used as the form's ID 'form_id' => 'my_grand_action',}
ERB action example:
AppConfig[:pui_page_custom_actions] << { 'record_type' => ['resource', 'archival_object'], # the jsonmodel type to show for # 'erb_partial' returns the path to an erb template from which the action will be rendered 'erb_partial' => 'shared/my_special_action',}
AppConfig[:pui_email_enabled]
Section titled “AppConfig[:pui_email_enabled]”PUI email settings (logs emails when disabled)
AppConfig[:pui_email_enabled] = false
AppConfig[:pui_email_override]
Section titled “AppConfig[:pui_email_override]”See above AppConfig[:pui_repos][{repo_code}][:request_email] for setting repository email overrides ‘pui_email_override’ for testing, this email will be the to-address for all sent emails
AppConfig[:pui_email_override] = 'testing@example.com'
AppConfig[:pui_request_email_fallback_to_address]
Section titled “AppConfig[:pui_request_email_fallback_to_address]”The ‘to’ email address for repositories that don’t define their own email
AppConfig[:pui_request_email_fallback_to_address] = 'testing@example.com'
AppConfig[:pui_request_email_fallback_from_address]
Section titled “AppConfig[:pui_request_email_fallback_from_address]”The ‘from’ email address for repositories that don’t define their own email
AppConfig[:pui_request_email_fallback_from_address] = 'testing@example.com'
AppConfig[:pui_request_use_repo_email]
Section titled “AppConfig[:pui_request_use_repo_email]”Use the repository record email address for requests (overrides config email)
AppConfig[:pui_request_use_repo_email] = false
AppConfig[:pui_email_delivery_method]
Section titled “AppConfig[:pui_email_delivery_method]”AppConfig[:pui_email_delivery_method] = :sendmail
AppConfig[:pui_email_sendmail_settings]
Section titled “AppConfig[:pui_email_sendmail_settings]”AppConfig[:pui_email_sendmail_settings] = { location: '/usr/sbin/sendmail', arguments: '-i'}
AppConfig[:pui_email_smtp_settings]
Section titled “AppConfig[:pui_email_smtp_settings]”Apply when AppConfig[:pui_email_delivery_method]
set to :smtp
Example SMTP configuration:
AppConfig[:pui_email_smtp_settings] = { address: 'smtp.gmail.com', port: 587, domain: 'gmail.com', user_name: '<username>', password: '<password>', authentication: 'plain', enable_starttls_auto: true,}
AppConfig[:pui_email_perform_deliveries]
Section titled “AppConfig[:pui_email_perform_deliveries]”AppConfig[:pui_email_perform_deliveries] = true
AppConfig[:pui_email_raise_delivery_errors]
Section titled “AppConfig[:pui_email_raise_delivery_errors]”AppConfig[:pui_email_raise_delivery_errors] = true
AppConfig[:pui_readmore_max_characters]
Section titled “AppConfig[:pui_readmore_max_characters]”The number of characters to truncate before showing the ‘Read More’ link on notes
AppConfig[:pui_readmore_max_characters] = 450
AppConfig[:pui_expand_all]
Section titled “AppConfig[:pui_expand_all]”Whether to expand all additional information blocks at the bottom of record pages by default. true
expands all blocks, false
collapses all blocks.
AppConfig[:pui_expand_all] = false
AppConfig[:max_search_columns]
Section titled “AppConfig[:max_search_columns]”Use to specify the maximum number of columns to display when searching or browsing
AppConfig[:max_search_columns] = 7