A digital repository application in use at Princeton University Library for storing and managing digital representations of manuscripts, ephemera, vector, and raster data for export into a variety of front-end displays.
Follow these steps the first time you clone this project to run in dev or test.
brew install asdf
.~/.asdfrc
file:
java_macos_integration_enable = yes
~/.asdfrc
has this line you may need to remove it:
legacy_version_file = yes
./bin/setup_asdf
. This script ensures all required plugins are installed and then installs all language dependencies specified in .tool-versions
../bin/setup
to ensure that required dependencies via homebrew, pip, bundler, and yarn.Remember you'll need to run bundle install
and yarn install
on an ongoing basis as dependencies are updated.
Mapnik currently isn't supported by M-series processors, so yarn install
above will
fail. To get this working, do the following:
arch
commandasdf uninstall nodejs
asdf uninstall yarn
rm ~/.asdf/shims/yarn
asdf install nodejs
npm install -g yarn
yarn install
~/.zshrc
or ~/.zshrc.local
:
# Fix issue with homebrew postgres and rails applications (Figgy in
particular).
# See: https://github.com/ged/ruby-pg/issues/538
export PGGSSENCMODE="disable"
Lando will automatically set up docker images for Solr and Postgres which match
the versions we use in Production. The ports will not collide with any other
projects you're using Solr/Postgres for, and you can easily clean up with lando destroy
or turn off all services with lando poweroff
.
Follow these steps every time you start new work in this project in dev or test
bundle exec rake servers:start
to start lando services and set up database state.bundle exec rspec
yarn test
If you want to watch feature tests run for debugging purposes, you can go to
http://localhost:7900, use the password secret
, and run tests like this:
RUN_IN_BROWSER=true bundle exec rspec spec/features
If you'd like to run the test suite in parallel do the following:
bundle exec rake servers:start
PARALLEL_TEST_FIRST_IS_1=true RAILS_ENV=test rake parallel:setup
(Sets up suport database; only needed after db has been destroyed)./bin/parallel_rspec_coverage
The output from the parallel runs will be interspersed, and the failures will be listed separately for each parallel run, but final run time and coverage will be reported accurate, and the file that powers the --only-failures flag will be correctly generated.
bundle exec rails s
in a terminal window you can keep openbundle exec rake figgy:set_admin_user
rails db:seed
# pipe through grep -v WARN
to ignore log warnings about the rabbitmq portSome tasks are performed by background workers. To run a Sidekiq background worker process to execute background jobs that are queued:
bundle exec sidekiq
To load the controlled vocabularies in config/vocab/
:
rake figgy:vocab:load CSV=config/vocab/iso639-1.csv NAME="LAE Languages"
rake figgy:vocab:load CSV=config/vocab/iso639-2.csv NAME="ISO-639-2 Languages"
rake figgy:vocab:load CSV=config/vocab/lae_areas.csv NAME="LAE Areas"
rake figgy:vocab:load CSV=config/vocab/lae_genres.csv NAME="LAE Genres" LABEL=pul_label
rake figgy:vocab:load CSV=config/vocab/lae_subjects.csv NAME="LAE Subjects" CATEGORY=category
By default, Figgy provides users with the ability to upload binaries from the local file system environment using the directory https://github.com/pulibrary/figgy/tree/master/staged_files. One may copy files into this directory for aiding in development, and may upload these files in this directory using the "File Manager" interface (exposed after saving a Work).
Figgy uses Google Cloud Storage buckets for providing support for preserving certain resources. Please find further documentation outlining the configuration for Google Cloud service authentication and permissions management here.
By default, in development, preserved objects will be stored in the directory "tmp/cloud_backup." If you'd like to configure and test Google Cloud storage instead, do the following:
.env
file in the root with the following settings:
STORAGE_PROJECT=pulibrary-figgy-storage-1
STORAGE_CREDENTIALS=tmp/gcs_pulibrary-staging-credentials.json
cloud
preservation policy
will save to a bucket you can view at https://console.cloud.google.com/storage/browser
Documentation on setup for staging/production Fixity configuration can be found in preservation_documentation.md.
gcloud components install beta
gcloud auth login
gcloud config set project pulibrary-figgy-storage-1
cap [staging/production] deploy:google_cloud_function
Figgy will persist DAOs to ArchivesSpace on completion of finding aid resources. It also uses an s3 bucket to store geo derivatives and serve them via titiler
To set these up in development, do the following:
lpass login <email>
bundle exec rake figgy:setup_keys
There are two types of read-only mode.
Read-only mode disables writing to the Postgres database. Use princeton_ansible to activate it:
figgy_read_only_mode
value in the relevant group_vars file (example: https://github.com/pulibrary/princeton_ansible/blob/9ccaadf336ddac973c4c18e836d46d445f15d38f/group_vars/figgy/staging.yml#L30)--tags=site_config
(this will also restart the site; visit it in browser to confirm)Known issue: In read-only mode users cannot download pdfs (unless they've been cached). See #2866
This disables writing to the Solr index, but allows writes to the Postgres database which don't get indexed, such as CDL charges or new user creation. This is most useful for long reindexing operations where we want to minimally impact our patrons.
To enable:
index_read_only
in config/config.yml
for
production or staging and deploy the branch.main
again when reindexing is complete.We maintain a Figgy Docker image for use in CircleCI. The Dockerfile is
located in the .circleci
directory. To update a package, dependency, or ruby
version, make edits to the Dockerfile. Then build and push the image to Docker Hub using
the following steps (be sure to increment the version):
cd .circleci/
docker login # login to docker hub
docker buildx build --push --platform linux/arm64,linux/amd64 -t pulibrary/ci-figgy:{version} . -f ./.circleci/Dockerfile
docker push pulibrary/ci-figgy:{version}
Valkyrie Documentation:
User documentation is maintained in Google Drive:
Links to dependencies used in Figgy:
Other dependencies: