From 0edb75d2ce8819b847c165605f1dbbbd4b793c75 Mon Sep 17 00:00:00 2001 From: Jeremy Friesen Date: Wed, 10 Jan 2024 10:41:05 -0500 Subject: [PATCH 01/15] =?UTF-8?q?=F0=9F=A7=B9=20Use=20Hyku=20v6.0.0rc1+=20?= =?UTF-8?q?for=20referencing=20knapsack=20main?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + hyrax-webapp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 7121866..65bcc70 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ scratch.md *~undo-tree~ .env.* .DS_Store +/file_cache/ diff --git a/hyrax-webapp b/hyrax-webapp index e60efac..703917b 160000 --- a/hyrax-webapp +++ b/hyrax-webapp @@ -1 +1 @@ -Subproject commit e60efacb694ccdde973a6abd0e376e7dc9c74bf6 +Subproject commit 703917bcc49737925a683b4cfa93417533749736 From 5a7c54cace96881a3963ab2fd881ca6ea3f57372 Mon Sep 17 00:00:00 2001 From: Jeremy Friesen Date: Wed, 10 Jan 2024 10:42:23 -0500 Subject: [PATCH 02/15] Updating knapsack's Gemfile.lock --- Gemfile.lock | 178 ++++++++++++++++++++++++++++----------------------- 1 file changed, 99 insertions(+), 79 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3461ff2..433cc6f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,66 +1,89 @@ PATH remote: . specs: - hyku-knapsack (0.0.1) + hyku_knapsack (0.0.1) rails (>= 5.2.0) GEM remote: https://rubygems.org/ specs: - actioncable (5.2.8.1) - actionpack (= 5.2.8.1) + actioncable (7.0.8) + actionpack (= 7.0.8) + activesupport (= 7.0.8) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailer (5.2.8.1) - actionpack (= 5.2.8.1) - actionview (= 5.2.8.1) - activejob (= 5.2.8.1) + actionmailbox (7.0.8) + actionpack (= 7.0.8) + activejob (= 7.0.8) + activerecord (= 7.0.8) + activestorage (= 7.0.8) + activesupport (= 7.0.8) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.8) + actionpack (= 7.0.8) + actionview (= 7.0.8) + activejob (= 7.0.8) + activesupport (= 7.0.8) mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp rails-dom-testing (~> 2.0) - actionpack (5.2.8.1) - actionview (= 5.2.8.1) - activesupport (= 5.2.8.1) - rack (~> 2.0, >= 2.0.8) + actionpack (7.0.8) + actionview (= 7.0.8) + activesupport (= 7.0.8) + rack (~> 2.0, >= 2.2.4) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (5.2.8.1) - activesupport (= 5.2.8.1) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (7.0.8) + actionpack (= 7.0.8) + activerecord (= 7.0.8) + activestorage (= 7.0.8) + activesupport (= 7.0.8) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.0.8) + activesupport (= 7.0.8) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.0, >= 1.0.3) - activejob (5.2.8.1) - activesupport (= 5.2.8.1) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (7.0.8) + activesupport (= 7.0.8) globalid (>= 0.3.6) - activemodel (5.2.8.1) - activesupport (= 5.2.8.1) - activerecord (5.2.8.1) - activemodel (= 5.2.8.1) - activesupport (= 5.2.8.1) - arel (>= 9.0) - activestorage (5.2.8.1) - actionpack (= 5.2.8.1) - activerecord (= 5.2.8.1) - marcel (~> 1.0.0) - activesupport (5.2.8.1) + activemodel (7.0.8) + activesupport (= 7.0.8) + activerecord (7.0.8) + activemodel (= 7.0.8) + activesupport (= 7.0.8) + activestorage (7.0.8) + actionpack (= 7.0.8) + activejob (= 7.0.8) + activerecord (= 7.0.8) + activesupport (= 7.0.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (7.0.8) concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) - arel (9.0.0) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) builder (3.2.4) concurrent-ruby (1.2.2) crass (1.0.6) date (3.3.3) erubi (1.12.0) - globalid (1.1.0) - activesupport (>= 5.0) + globalid (1.2.1) + activesupport (>= 6.1) i18n (1.14.1) concurrent-ruby (~> 1.0) - loofah (2.20.0) + loofah (2.21.4) crass (~> 1.0.2) - nokogiri (>= 1.5.9) + nokogiri (>= 1.12.0) mail (2.8.1) mini_mime (>= 0.1.1) net-imap @@ -68,70 +91,67 @@ GEM net-smtp marcel (1.0.2) method_source (1.0.0) - mini_mime (1.1.2) - minitest (5.18.1) - net-imap (0.3.4) + mini_mime (1.1.5) + minitest (5.20.0) + net-imap (0.4.3) date net-protocol net-pop (0.1.2) net-protocol net-protocol (0.2.1) timeout - net-smtp (0.3.3) + net-smtp (0.4.0) net-protocol nio4r (2.5.9) - nokogiri (1.14.4-arm64-darwin) + nokogiri (1.15.4-arm64-darwin) racc (~> 1.4) - racc (1.6.2) - rack (2.2.7) + racc (1.7.2) + rack (2.2.8) rack-test (2.1.0) rack (>= 1.3) - rails (5.2.8.1) - actioncable (= 5.2.8.1) - actionmailer (= 5.2.8.1) - actionpack (= 5.2.8.1) - actionview (= 5.2.8.1) - activejob (= 5.2.8.1) - activemodel (= 5.2.8.1) - activerecord (= 5.2.8.1) - activestorage (= 5.2.8.1) - activesupport (= 5.2.8.1) - bundler (>= 1.3.0) - railties (= 5.2.8.1) - sprockets-rails (>= 2.0.0) - rails-dom-testing (2.0.3) - activesupport (>= 4.2.0) + rails (7.0.8) + actioncable (= 7.0.8) + actionmailbox (= 7.0.8) + actionmailer (= 7.0.8) + actionpack (= 7.0.8) + actiontext (= 7.0.8) + actionview (= 7.0.8) + activejob (= 7.0.8) + activemodel (= 7.0.8) + activerecord (= 7.0.8) + activestorage (= 7.0.8) + activesupport (= 7.0.8) + bundler (>= 1.15.0) + railties (= 7.0.8) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.5.0) - loofah (~> 2.19, >= 2.19.1) - railties (5.2.8.1) - actionpack (= 5.2.8.1) - activesupport (= 5.2.8.1) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.0.8) + actionpack (= 7.0.8) + activesupport (= 7.0.8) method_source - rake (>= 0.8.7) - thor (>= 0.19.0, < 2.0) - rake (13.0.6) - sprockets (3.7.2) + rake (>= 12.2) + thor (~> 1.0) + zeitwerk (~> 2.5) + rake (13.1.0) + thor (1.3.0) + timeout (0.4.0) + tzinfo (2.0.6) concurrent-ruby (~> 1.0) - rack (> 1, < 3) - sprockets-rails (3.4.2) - actionpack (>= 5.2) - activesupport (>= 5.2) - sprockets (>= 3.0.0) - thor (1.2.1) - thread_safe (0.3.6) - timeout (0.3.2) - tzinfo (1.2.11) - thread_safe (~> 0.1) - websocket-driver (0.7.5) + websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) + zeitwerk (2.6.12) PLATFORMS ruby DEPENDENCIES - hyku-knapsack! + hyku_knapsack! BUNDLED WITH 2.1.4 From 95d03ab7b16dca8ad80025d4b8ca05d17dc095b7 Mon Sep 17 00:00:00 2001 From: Jeremy Friesen Date: Wed, 10 Jan 2024 14:57:12 -0500 Subject: [PATCH 03/15] =?UTF-8?q?=F0=9F=A7=B9=20Configure=20Knapsack=20to?= =?UTF-8?q?=20Use=20Hyku=20Prime?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit documents the need for Knapsack to reference a branch; as well as provides documentation for doing so. --- README.md | 29 +++++++++++++++++++++++++++-- hyrax-webapp | 2 +- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 379300e..ad7ea31 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ In your Repository host of choice, create a new (and for now empty) repository. - `$NEW_REPO_URL` is the location of your application's knapsack git project (e.g. https://github.com/my-org/my_org_knapsack) ```bash -git clone https://github.com/scientist-softserv/adventist_knapsack $PROJECT_NAME_knapsack +git clone https://github.com/samvera-labs/hyku_knapsack $PROJECT_NAME_knapsack cd $PROJECT_NAME_knapsack git remote rename origin prime git remote add origin $NEW_REPO_URL @@ -63,6 +63,8 @@ git branch -M main git push -u origin main ``` +Naming the `samvera-labs/hyku_knapsack` as `prime` helps clarify what we mean. In conversations about Hyku instances, invariably we use the language of Prime to reflect what's in Samvera's repositories. By using that language for remotes, we help reinforce the concept that `https://github.com/samvera/hyku` is Hyku prime and `https://github.com/samvera-labs/hyku_knapsack` is Knapsack prime. + #### Fork on Github If you choose to fork Knapsack, be aware that this will impact how you manage pull requests via Github. Namely as you submit PRs on your Fork, the UI might default to applying that to the fork's origin (e.g. Knapsack upstream). @@ -76,7 +78,30 @@ git remote add prime https://github.com/samvera-labs/hyku_knapsack ### Hyku and HykuKnapsack -You run your Hyku application by way of the HykuKnapsack. As mentioned, the HykuKnapsack contains your application's relevant information for running an instance of Hyku. A newly cloned knapsack will have an empty `./hyrax-webapp` directory. That is where the Hyku application will exist. The version of Hyku is managed via a [Git submodule](https://git-scm.com/docs/git-submodule). +You run your Hyku application by way of the HykuKnapsack. As mentioned, the HykuKnapsack contains your application's relevant information for running an instance of Hyku. + +There are two things you need to do: + +- Ensure you have the [reserved branch](#reserved-branch) +- Initialize the [Hyku submodule](#hyku-submodule) + +#### Reserved Branch + +Knapsack turns the assumptions of a Rails engine upside-down; the application overlays traditional engines, but Knapsack overlays the application. As such the Gemfile declared in Hyku does some bundler trickery. + +In the `$PROJECT_NAME_knapsack` directory, you need to run the following: + +```bash +git fetch prime +git checkout prime/required_for_knapsack_instances +git switch -c required_for_knapsack_instances +``` + +For Hyku to build with Knapsack, we need a local branch named `required_for_knapsack_instances`. _Note:_ As we work more with Knapsack maintenance there may be improvements to this shim. + +#### Hyku Submodule + +A newly cloned knapsack will have an empty `./hyrax-webapp` directory. That is where the Hyku application will exist. The version of Hyku is managed via a [Git submodule](https://git-scm.com/docs/git-submodule). To bring that application into your knapsack, you will need to initialize the Hyku submodule: diff --git a/hyrax-webapp b/hyrax-webapp index 703917b..391a7a3 160000 --- a/hyrax-webapp +++ b/hyrax-webapp @@ -1 +1 @@ -Subproject commit 703917bcc49737925a683b4cfa93417533749736 +Subproject commit 391a7a32faec0cd1f56af70c171833f27b617dc3 From 672dc9b18a1312663198fe8040a2cc7a20927e3f Mon Sep 17 00:00:00 2001 From: Rob Kaufman Date: Thu, 1 Feb 2024 10:53:42 -0800 Subject: [PATCH 04/15] get fixes from adventist --- .github/workflows/build-test-lint.yaml | 2 + .gitignore | 3 +- Dockerfile | 18 +- Gemfile | 10 + LICENSE | 212 +++++++++++++++++- .../hyku_knapsack/application_controller.rb | 2 + .../hyku_knapsack/application_helper.rb | 2 + app/jobs/hyku_knapsack/application_job.rb | 2 + .../hyku_knapsack/application_mailer.rb | 2 + .../hyku_knapsack/application_record.rb | 4 +- bin/knapsacker | 17 +- bin/rails | 26 +-- db-migrate-seed.sh | 1 - docker-compose.yml | 15 +- hyku_knapsack.gemspec | 2 + hyrax-webapp | 2 +- lib/hyku_knapsack/engine.rb | 81 ++++++- lib/hyku_knapsack/version.rb | 2 + lib/tasks/hyku_knapsack_tasks.rake | 1 + 19 files changed, 347 insertions(+), 57 deletions(-) diff --git a/.github/workflows/build-test-lint.yaml b/.github/workflows/build-test-lint.yaml index c00fa92..2bdf3c6 100644 --- a/.github/workflows/build-test-lint.yaml +++ b/.github/workflows/build-test-lint.yaml @@ -31,6 +31,7 @@ jobs: confdir: '/app/samvera/hyrax-webapp/solr/conf' webTarget: hyku-web workerTarget: hyku-worker + rspec_cmd: "cd .. && gem install semaphore_test_boosters && bundle && rspec_booster --job $CI_NODE_INDEX/$CI_NODE_TOTAL" lint: needs: build @@ -38,3 +39,4 @@ jobs: with: webTarget: hyku-web workerTarget: hyku-worker + rubocop_cmd: "cd .. && bundle && bundle exec rubocop --parallel --format progress" diff --git a/.gitignore b/.gitignore index 65bcc70..e00f97c 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ scratch.md *~undo-tree~ .env.* .DS_Store -/file_cache/ + +/coverage diff --git a/Dockerfile b/Dockerfile index 82e2f5c..9cb9e52 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,23 @@ -FROM ghcr.io/samvera/hyku/base:latest as hyku-web +FROM ghcr.io/samvera/hyku/base:latest as hyku-knap-base # This is specifically NOT $APP_PATH but the parent directory COPY --chown=1001:101 . /app/samvera +ENV BUNDLE_LOCAL__HYKU_KNAPSACK=/app/samvera +ENV BUNDLE_DISABLE_LOCAL_BRANCH_CHECK=true + +# Ensure root permissions for installing Tesseract data +USER root + +# Install "best" training data for Tesseract +RUN echo "📚 Installing Tesseract Best (training data)!" && \ + wget https://github.com/tesseract-ocr/tessdata_best/raw/main/eng.traineddata -O /usr/share/tessdata/eng_best.traineddata + +# Switch back to the non-root user for running the application +USER app + +FROM hyku-knap-base as hyku-web +RUN RAILS_ENV=production SECRET_KEY_BASE=`bin/rake secret` DB_ADAPTER=nulldb DB_URL='postgresql://fake' bundle exec rake assets:precompile && yarn install + CMD ./bin/web FROM hyku-web as hyku-worker diff --git a/Gemfile b/Gemfile index 7d62fd6..43c274d 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" git_source(:github) { |repo| "https://github.com/#{repo}.git" } @@ -6,3 +8,11 @@ gemspec # Start debugger with binding.b [https://github.com/ruby/debug] # gem "debug", ">= 1.0.0" + +gemfile_path = File.expand_path("hyrax-webapp/Gemfile", __dir__) +if File.exist?(gemfile_path) + gemfile = File.read(gemfile_path).split("\n").reject { |l| l.match('knapsack') } + # rubocop:disable Security/Eval + eval(gemfile.join("\n"), binding) + # rubocop:enable Security/Eval +end diff --git a/LICENSE b/LICENSE index 11d45a3..6fb4e41 100644 --- a/LICENSE +++ b/LICENSE @@ -1,15 +1,205 @@ -Copyright 2023 The Assay Depot Inc. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Additional copyright may be held by others, as reflected in the commit history. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at + 1. Definitions. - http://www.apache.org/licenses/LICENSE-2.0 + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2012 Penn State University + Copyright 2013 University of Notre Dame, Northwestern University, and Data Curation Experts + Copyright 2014 Data Curation Experts + Additional copyright may be held by others, as reflected in the commit log + + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/app/controllers/hyku_knapsack/application_controller.rb b/app/controllers/hyku_knapsack/application_controller.rb index 14fef20..2883029 100644 --- a/app/controllers/hyku_knapsack/application_controller.rb +++ b/app/controllers/hyku_knapsack/application_controller.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module HykuKnapsack class ApplicationController < ActionController::Base end diff --git a/app/helpers/hyku_knapsack/application_helper.rb b/app/helpers/hyku_knapsack/application_helper.rb index ff7a1a2..80b31de 100644 --- a/app/helpers/hyku_knapsack/application_helper.rb +++ b/app/helpers/hyku_knapsack/application_helper.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module HykuKnapsack module ApplicationHelper end diff --git a/app/jobs/hyku_knapsack/application_job.rb b/app/jobs/hyku_knapsack/application_job.rb index cdf3c0a..79eb6b6 100644 --- a/app/jobs/hyku_knapsack/application_job.rb +++ b/app/jobs/hyku_knapsack/application_job.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module HykuKnapsack class ApplicationJob < ActiveJob::Base end diff --git a/app/mailers/hyku_knapsack/application_mailer.rb b/app/mailers/hyku_knapsack/application_mailer.rb index 4c099b8..32535de 100644 --- a/app/mailers/hyku_knapsack/application_mailer.rb +++ b/app/mailers/hyku_knapsack/application_mailer.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module HykuKnapsack class ApplicationMailer < ActionMailer::Base default from: "from@example.com" diff --git a/app/models/hyku_knapsack/application_record.rb b/app/models/hyku_knapsack/application_record.rb index c04775b..61ee1e1 100644 --- a/app/models/hyku_knapsack/application_record.rb +++ b/app/models/hyku_knapsack/application_record.rb @@ -1,4 +1,6 @@ -module HykuKnapsac +# frozen_string_literal: true + +module HykuKnapsack class ApplicationRecord < ActiveRecord::Base self.abstract_class = true end diff --git a/bin/knapsacker b/bin/knapsacker index 2617e7c..b177eab 100755 --- a/bin/knapsacker +++ b/bin/knapsacker @@ -1,6 +1,6 @@ #!/usr/bin/env ruby -wU -# The purpose of this script is to quickly assess which files should: +# The purpose of this script is to quickly assess which specs should: # # - be removed (e.g. duplicate in Knapsack and Hyku) # - be reviewed (e.g. differences between Knapsack and Hyku) @@ -65,11 +65,10 @@ end # TODO: This is not generally working. dir_glob_patterns_to_check.each do |pattern| - Dir.glob(File.join(yours, pattern)).each do |your_path| - path = your_path.sub(File.join(yours, '/'), '') - upstream_path = File.join(upstream, path) - if File.exist?(upstream_path) - results = `diff #{your_path} #{upstream_path}`.strip + Dir.glob(pattern).each do |path| + hyku_path = File.join(upstream, path) + if File.exist?(hyku_path) + results = `diff #{path} #{hyku_path}`.strip if results.empty? duplicates << path else @@ -95,7 +94,7 @@ end puts "" puts "------------------------------------------------------------------" -puts "Files in \"yours\" that are exact duplicates of \"upstream\" files" +puts "Files in your Hyku that are exact duplicates of upstream Hyku file" puts "They are prefixed with a `='" puts "------------------------------------------------------------------" duplicates.each do |path| @@ -108,7 +107,7 @@ end puts "" puts "----------------------------------------------------" -puts "Files that are in \"yours\" but not in \"upstream\" " +puts "Files that are in your Hyku but not in upstream Hyku" puts "They are prefixed with a `+'" puts "----------------------------------------------------" in_yours_but_not_in_upstream.each do |path| @@ -118,7 +117,7 @@ end puts "" puts "-------------------------------------------------------------" -puts "Files that are changed in \"yours\" relative to \"upstream\"" +puts "Files that are changed in your Hyku relative to upstream Hyku" puts "They are prefixed with a `Δ'" puts "-------------------------------------------------------------" changed_in_yours.each do |path| diff --git a/bin/rails b/bin/rails index d1137e3..0739660 100755 --- a/bin/rails +++ b/bin/rails @@ -1,24 +1,4 @@ #!/usr/bin/env ruby -# This command will automatically be run when you run "rails" with Rails gems -# installed from the root of your application. - -ENGINE_ROOT = File.expand_path("..", __dir__) -ENGINE_PATH = File.expand_path("../lib/hyku_knapsack/engine", __dir__) -APP_PATH = File.expand_path("../hyrax-webapp/config/application", __dir__) - -# Set up gems listed in the Gemfile. -ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) -require "bundler/setup" if File.exist?(ENV["BUNDLE_GEMFILE"]) - -require "rails" -# Pick the frameworks you want: -require "active_model/railtie" -require "active_job/railtie" -require "active_record/railtie" -require "active_storage/engine" -require "action_controller/railtie" -require "action_mailer/railtie" -require "action_view/railtie" -require "action_cable/engine" -# require "rails/test_unit/railtie" -require "rails/engine/commands" +APP_PATH = File.expand_path('../config/application', __dir__) +require_relative '../config/boot' +require 'rails/commands' diff --git a/db-migrate-seed.sh b/db-migrate-seed.sh index 6e8b081..eeecf94 100755 --- a/db-migrate-seed.sh +++ b/db-migrate-seed.sh @@ -10,7 +10,6 @@ db-wait.sh "$SOLR_HOST:$SOLR_PORT" migrations_run=`PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -U $DB_USER $DB_NAME -t -c "SELECT version FROM schema_migrations ORDER BY schema_migrations" | wc -c` migrations_fs=`ls -l db/migrate/ | awk '{print $9}' | grep -o '[0-9]\+' | wc -c` if [[ "$migrations_run" -lt "$migrations_fs" ]]; then - bundle bundle exec rails db:create bundle exec rails db:migrate bundle exec rails db:seed diff --git a/docker-compose.yml b/docker-compose.yml index f538db4..1dccd2e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -70,8 +70,8 @@ services: extends: file: hyrax-webapp/docker-compose.yml service: web - # command left commented for situations where the Gemfile.lock needs to be updated before the app starts - # command: bash -l -c "sleep infinity" + # Uncomment command to access container with out starting bin/web. Useful for debugging or updating Gemfile.lock + # command: sleep infinity environment: # This line is what makes the knapsack include use the local code instead of the remote gem - BUNDLE_LOCAL__HYKU_KNAPSACK=/app/samvera @@ -84,7 +84,18 @@ services: extends: file: hyrax-webapp/docker-compose.yml service: worker + build: + context: . + target: hyku-worker + cache_from: + - ghcr.io/samvera/hyku/base:latest + - ghcr.io/samvera-labs/hyku_knapsack/worker:latest + args: + BUILDKIT_INLINE_CACHE: 1 + APP_PATH: ./hyrax-webapp image: ghcr.io/samvera-labs/hyku_knapsack/worker:${TAG:-latest} + # Uncomment command to access container with out starting bin/worker. Useful for debugging or updating Gemfile.lock + # command: sleep infinity volumes: - node_modules:/app/samvera/hyrax-webapp/node_modules:cached - uploads:/app/samvera/hyrax-webapp/public/uploads:cached diff --git a/hyku_knapsack.gemspec b/hyku_knapsack.gemspec index 959fcf2..ffc994a 100644 --- a/hyku_knapsack.gemspec +++ b/hyku_knapsack.gemspec @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require_relative "lib/hyku_knapsack/version" Gem::Specification.new do |spec| diff --git a/hyrax-webapp b/hyrax-webapp index 391a7a3..e60efac 160000 --- a/hyrax-webapp +++ b/hyrax-webapp @@ -1 +1 @@ -Subproject commit 391a7a32faec0cd1f56af70c171833f27b617dc3 +Subproject commit e60efacb694ccdde973a6abd0e376e7dc9c74bf6 diff --git a/lib/hyku_knapsack/engine.rb b/lib/hyku_knapsack/engine.rb index 1ba2361..74de876 100644 --- a/lib/hyku_knapsack/engine.rb +++ b/lib/hyku_knapsack/engine.rb @@ -1,13 +1,28 @@ +# frozen_string_literal: true + module HykuKnapsack class Engine < ::Rails::Engine isolate_namespace HykuKnapsack + def self.load_translations! + HykuKnapsack::Engine.root.glob("config/locales/**/*.yml").each do |path| + I18n.load_path << path.to_s + end + + # Let's have unique load_paths. Later entries in the I18n.load_path array take precendence + # over earlier entries (e.g. lower array index means lower precedence). So we need to reverse + # the array, then call uniq (which will drop duplicates that show up later in the array). + # Then reverse again. (You know, kind of like an Uno reverse battle.) + I18n.load_path = I18n.load_path.reverse.uniq.reverse + I18n.backend.reload! + end + initializer :append_migrations do |app| # only add the migrations if they are not already copied # via the rake task. Allows gem to work both with the install:migrations # and without it. if !app.root.to_s.match(root.to_s) && - app.root.join('db/migrate').children.none? {|path| path.fnmatch?("*.hyku_knapsack.rb")} + app.root.join('db/migrate').children.none? { |path| path.fnmatch?("*.hyku_knapsack.rb") } config.paths["db/migrate"].expanded.each do |expanded_path| app.config.paths["db/migrate"] << expanded_path end @@ -16,16 +31,68 @@ class Engine < ::Rails::Engine config.before_initialize do config.i18n.load_path += Dir["#{config.root}/config/locales/**/*.yml"] + + #if Hyku::Application.respond_to?(:user_devise_parameters=) + # Hyku::Application.user_devise_parameters = %i[ + # database_authenticatable + # invitable + # recoverable + # rememberable + # trackable + # validatable + # omniauthable + # ] + #end end config.after_initialize do - my_engine_root = HykuKnapsack::Engine.root.to_s - paths = ActionController::Base.view_paths.collect{|p| p.to_s} - # This is the opposite of what you usually want to do. Normally app views override engine views - # but in our case things in the Knapsack override what is in the application - paths = [my_engine_root + '/app/views'] + paths - ActionController::Base.view_paths = paths.uniq + # need collection model first + collection_decorator = HykuKnapsack::Engine.root.join("app", "models", "collection_decorator.rb").to_s + Rails.configuration.cache_classes ? require(collection_decorator) : load(collection_decorator) + + HykuKnapsack::Engine.root.glob("app/**/*_decorator*.rb").sort.each do |c| + Rails.configuration.cache_classes ? require(c) : load(c) + end + + HykuKnapsack::Engine.root.glob("lib/**/*_decorator*.rb").sort.each do |c| + Rails.configuration.cache_classes ? require(c) : load(c) + end + + # By default plain text files are not processed for text extraction. In adding + # Adventist::TextFileTextExtractionService to the beginning of the services array we are + # enabling text extraction from plain text files. + # + # https://github.com/scientist-softserv/adventist-dl/blob/97bd05946345926b2b6c706bd90e183a9d78e8ef/config/application.rb#L68-L73 + Hyrax::DerivativeService.services = [ + Adventist::TextFileTextExtractionService, + IiifPrint::PluggableDerivativeService + ] + + # This is the opposite of what you usually want to do. Normally app views override engine + # views but in our case things in the Knapsack override what is in the application. + # Furthermore we need to account for when the ApplicationController and it's descendants set + # their individual view_paths. By looping through all descendants, we ensure that we have + # the Knapsack views at the beginning of the list of view_paths. + # + # In the load sequence, when we load ApplicationController, we establish the view_path for all + # future descendants. When we then encounter a descendant, we copy the + # ApplicationController's view_path to the descendant; then later after we've encountered most + # all of the descendants we updated the ApplicationController's view_path, but that does not + # propogate to the descendants' copied view_path. + ([::ApplicationController] + ::ApplicationController.descendants).each do |klass| + paths = klass.view_paths.collect(&:to_s) + paths = [HykuKnapsack::Engine.root.join('app', 'views').to_s] + paths + klass.view_paths = paths.uniq + end ::ApplicationController.send :helper, HykuKnapsack::Engine.helpers + + ## + # Ensure that all knapsack locales are the "first choice" of keys. We've already done this in + # the catalog controller to appease the Blacklight constraint of having translations loaded. + # However, between loading those translations in the catalog controller and now, the + # underlying application and even other engines might have further amended the load path. + # This is our "best" chance to do it at the latest possible moment. + HykuKnapsack::Engine.load_translations! end end end diff --git a/lib/hyku_knapsack/version.rb b/lib/hyku_knapsack/version.rb index 0521d65..1942f9b 100644 --- a/lib/hyku_knapsack/version.rb +++ b/lib/hyku_knapsack/version.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module HykuKnapsack VERSION = "0.0.1" TEST = 'five' diff --git a/lib/tasks/hyku_knapsack_tasks.rake b/lib/tasks/hyku_knapsack_tasks.rake index e6109e3..e36341a 100644 --- a/lib/tasks/hyku_knapsack_tasks.rake +++ b/lib/tasks/hyku_knapsack_tasks.rake @@ -1,3 +1,4 @@ +# frozen_string_literal: true # desc "Explaining what the task does" # task :hyku_knapsack do # # Task goes here From 172a6031e3b12f8cb2fa857ffb7a0b1b87a8764f Mon Sep 17 00:00:00 2001 From: Shana Moore Date: Mon, 19 Feb 2024 13:35:49 -0800 Subject: [PATCH 05/15] Get the build working references hyrax-webapp[tags/v5.2.0]. Required to get the build/pipeline working. --- hyrax-webapp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyrax-webapp b/hyrax-webapp index 391a7a3..4717a5b 160000 --- a/hyrax-webapp +++ b/hyrax-webapp @@ -1 +1 @@ -Subproject commit 391a7a32faec0cd1f56af70c171833f27b617dc3 +Subproject commit 4717a5b576cdbc87ab000345465a8da4cf4774a8 From 3ab32f0eb3179440a02727829f08fc32deaf2f3f Mon Sep 17 00:00:00 2001 From: Rob Kaufman Date: Thu, 1 Feb 2024 10:53:42 -0800 Subject: [PATCH 06/15] get fixes from adventist --- .github/workflows/build-test-lint.yaml | 2 + .gitignore | 3 +- Dockerfile | 18 +- Gemfile | 10 + LICENSE | 212 +++++++++++++++++- .../hyku_knapsack/application_controller.rb | 2 + .../hyku_knapsack/application_helper.rb | 2 + app/jobs/hyku_knapsack/application_job.rb | 2 + .../hyku_knapsack/application_mailer.rb | 2 + .../hyku_knapsack/application_record.rb | 4 +- bin/knapsacker | 17 +- bin/rails | 26 +-- db-migrate-seed.sh | 1 - docker-compose.yml | 15 +- hyku_knapsack.gemspec | 2 + hyrax-webapp | 2 +- lib/hyku_knapsack/engine.rb | 81 ++++++- lib/hyku_knapsack/version.rb | 2 + lib/tasks/hyku_knapsack_tasks.rake | 1 + 19 files changed, 347 insertions(+), 57 deletions(-) diff --git a/.github/workflows/build-test-lint.yaml b/.github/workflows/build-test-lint.yaml index c00fa92..2bdf3c6 100644 --- a/.github/workflows/build-test-lint.yaml +++ b/.github/workflows/build-test-lint.yaml @@ -31,6 +31,7 @@ jobs: confdir: '/app/samvera/hyrax-webapp/solr/conf' webTarget: hyku-web workerTarget: hyku-worker + rspec_cmd: "cd .. && gem install semaphore_test_boosters && bundle && rspec_booster --job $CI_NODE_INDEX/$CI_NODE_TOTAL" lint: needs: build @@ -38,3 +39,4 @@ jobs: with: webTarget: hyku-web workerTarget: hyku-worker + rubocop_cmd: "cd .. && bundle && bundle exec rubocop --parallel --format progress" diff --git a/.gitignore b/.gitignore index 65bcc70..e00f97c 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ scratch.md *~undo-tree~ .env.* .DS_Store -/file_cache/ + +/coverage diff --git a/Dockerfile b/Dockerfile index 82e2f5c..9cb9e52 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,23 @@ -FROM ghcr.io/samvera/hyku/base:latest as hyku-web +FROM ghcr.io/samvera/hyku/base:latest as hyku-knap-base # This is specifically NOT $APP_PATH but the parent directory COPY --chown=1001:101 . /app/samvera +ENV BUNDLE_LOCAL__HYKU_KNAPSACK=/app/samvera +ENV BUNDLE_DISABLE_LOCAL_BRANCH_CHECK=true + +# Ensure root permissions for installing Tesseract data +USER root + +# Install "best" training data for Tesseract +RUN echo "📚 Installing Tesseract Best (training data)!" && \ + wget https://github.com/tesseract-ocr/tessdata_best/raw/main/eng.traineddata -O /usr/share/tessdata/eng_best.traineddata + +# Switch back to the non-root user for running the application +USER app + +FROM hyku-knap-base as hyku-web +RUN RAILS_ENV=production SECRET_KEY_BASE=`bin/rake secret` DB_ADAPTER=nulldb DB_URL='postgresql://fake' bundle exec rake assets:precompile && yarn install + CMD ./bin/web FROM hyku-web as hyku-worker diff --git a/Gemfile b/Gemfile index 7d62fd6..43c274d 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" git_source(:github) { |repo| "https://github.com/#{repo}.git" } @@ -6,3 +8,11 @@ gemspec # Start debugger with binding.b [https://github.com/ruby/debug] # gem "debug", ">= 1.0.0" + +gemfile_path = File.expand_path("hyrax-webapp/Gemfile", __dir__) +if File.exist?(gemfile_path) + gemfile = File.read(gemfile_path).split("\n").reject { |l| l.match('knapsack') } + # rubocop:disable Security/Eval + eval(gemfile.join("\n"), binding) + # rubocop:enable Security/Eval +end diff --git a/LICENSE b/LICENSE index 11d45a3..6fb4e41 100644 --- a/LICENSE +++ b/LICENSE @@ -1,15 +1,205 @@ -Copyright 2023 The Assay Depot Inc. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Additional copyright may be held by others, as reflected in the commit history. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at + 1. Definitions. - http://www.apache.org/licenses/LICENSE-2.0 + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2012 Penn State University + Copyright 2013 University of Notre Dame, Northwestern University, and Data Curation Experts + Copyright 2014 Data Curation Experts + Additional copyright may be held by others, as reflected in the commit log + + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/app/controllers/hyku_knapsack/application_controller.rb b/app/controllers/hyku_knapsack/application_controller.rb index 14fef20..2883029 100644 --- a/app/controllers/hyku_knapsack/application_controller.rb +++ b/app/controllers/hyku_knapsack/application_controller.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module HykuKnapsack class ApplicationController < ActionController::Base end diff --git a/app/helpers/hyku_knapsack/application_helper.rb b/app/helpers/hyku_knapsack/application_helper.rb index ff7a1a2..80b31de 100644 --- a/app/helpers/hyku_knapsack/application_helper.rb +++ b/app/helpers/hyku_knapsack/application_helper.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module HykuKnapsack module ApplicationHelper end diff --git a/app/jobs/hyku_knapsack/application_job.rb b/app/jobs/hyku_knapsack/application_job.rb index cdf3c0a..79eb6b6 100644 --- a/app/jobs/hyku_knapsack/application_job.rb +++ b/app/jobs/hyku_knapsack/application_job.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module HykuKnapsack class ApplicationJob < ActiveJob::Base end diff --git a/app/mailers/hyku_knapsack/application_mailer.rb b/app/mailers/hyku_knapsack/application_mailer.rb index 4c099b8..32535de 100644 --- a/app/mailers/hyku_knapsack/application_mailer.rb +++ b/app/mailers/hyku_knapsack/application_mailer.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module HykuKnapsack class ApplicationMailer < ActionMailer::Base default from: "from@example.com" diff --git a/app/models/hyku_knapsack/application_record.rb b/app/models/hyku_knapsack/application_record.rb index c04775b..61ee1e1 100644 --- a/app/models/hyku_knapsack/application_record.rb +++ b/app/models/hyku_knapsack/application_record.rb @@ -1,4 +1,6 @@ -module HykuKnapsac +# frozen_string_literal: true + +module HykuKnapsack class ApplicationRecord < ActiveRecord::Base self.abstract_class = true end diff --git a/bin/knapsacker b/bin/knapsacker index 2617e7c..b177eab 100755 --- a/bin/knapsacker +++ b/bin/knapsacker @@ -1,6 +1,6 @@ #!/usr/bin/env ruby -wU -# The purpose of this script is to quickly assess which files should: +# The purpose of this script is to quickly assess which specs should: # # - be removed (e.g. duplicate in Knapsack and Hyku) # - be reviewed (e.g. differences between Knapsack and Hyku) @@ -65,11 +65,10 @@ end # TODO: This is not generally working. dir_glob_patterns_to_check.each do |pattern| - Dir.glob(File.join(yours, pattern)).each do |your_path| - path = your_path.sub(File.join(yours, '/'), '') - upstream_path = File.join(upstream, path) - if File.exist?(upstream_path) - results = `diff #{your_path} #{upstream_path}`.strip + Dir.glob(pattern).each do |path| + hyku_path = File.join(upstream, path) + if File.exist?(hyku_path) + results = `diff #{path} #{hyku_path}`.strip if results.empty? duplicates << path else @@ -95,7 +94,7 @@ end puts "" puts "------------------------------------------------------------------" -puts "Files in \"yours\" that are exact duplicates of \"upstream\" files" +puts "Files in your Hyku that are exact duplicates of upstream Hyku file" puts "They are prefixed with a `='" puts "------------------------------------------------------------------" duplicates.each do |path| @@ -108,7 +107,7 @@ end puts "" puts "----------------------------------------------------" -puts "Files that are in \"yours\" but not in \"upstream\" " +puts "Files that are in your Hyku but not in upstream Hyku" puts "They are prefixed with a `+'" puts "----------------------------------------------------" in_yours_but_not_in_upstream.each do |path| @@ -118,7 +117,7 @@ end puts "" puts "-------------------------------------------------------------" -puts "Files that are changed in \"yours\" relative to \"upstream\"" +puts "Files that are changed in your Hyku relative to upstream Hyku" puts "They are prefixed with a `Δ'" puts "-------------------------------------------------------------" changed_in_yours.each do |path| diff --git a/bin/rails b/bin/rails index d1137e3..0739660 100755 --- a/bin/rails +++ b/bin/rails @@ -1,24 +1,4 @@ #!/usr/bin/env ruby -# This command will automatically be run when you run "rails" with Rails gems -# installed from the root of your application. - -ENGINE_ROOT = File.expand_path("..", __dir__) -ENGINE_PATH = File.expand_path("../lib/hyku_knapsack/engine", __dir__) -APP_PATH = File.expand_path("../hyrax-webapp/config/application", __dir__) - -# Set up gems listed in the Gemfile. -ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) -require "bundler/setup" if File.exist?(ENV["BUNDLE_GEMFILE"]) - -require "rails" -# Pick the frameworks you want: -require "active_model/railtie" -require "active_job/railtie" -require "active_record/railtie" -require "active_storage/engine" -require "action_controller/railtie" -require "action_mailer/railtie" -require "action_view/railtie" -require "action_cable/engine" -# require "rails/test_unit/railtie" -require "rails/engine/commands" +APP_PATH = File.expand_path('../config/application', __dir__) +require_relative '../config/boot' +require 'rails/commands' diff --git a/db-migrate-seed.sh b/db-migrate-seed.sh index 6e8b081..eeecf94 100755 --- a/db-migrate-seed.sh +++ b/db-migrate-seed.sh @@ -10,7 +10,6 @@ db-wait.sh "$SOLR_HOST:$SOLR_PORT" migrations_run=`PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -U $DB_USER $DB_NAME -t -c "SELECT version FROM schema_migrations ORDER BY schema_migrations" | wc -c` migrations_fs=`ls -l db/migrate/ | awk '{print $9}' | grep -o '[0-9]\+' | wc -c` if [[ "$migrations_run" -lt "$migrations_fs" ]]; then - bundle bundle exec rails db:create bundle exec rails db:migrate bundle exec rails db:seed diff --git a/docker-compose.yml b/docker-compose.yml index f538db4..1dccd2e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -70,8 +70,8 @@ services: extends: file: hyrax-webapp/docker-compose.yml service: web - # command left commented for situations where the Gemfile.lock needs to be updated before the app starts - # command: bash -l -c "sleep infinity" + # Uncomment command to access container with out starting bin/web. Useful for debugging or updating Gemfile.lock + # command: sleep infinity environment: # This line is what makes the knapsack include use the local code instead of the remote gem - BUNDLE_LOCAL__HYKU_KNAPSACK=/app/samvera @@ -84,7 +84,18 @@ services: extends: file: hyrax-webapp/docker-compose.yml service: worker + build: + context: . + target: hyku-worker + cache_from: + - ghcr.io/samvera/hyku/base:latest + - ghcr.io/samvera-labs/hyku_knapsack/worker:latest + args: + BUILDKIT_INLINE_CACHE: 1 + APP_PATH: ./hyrax-webapp image: ghcr.io/samvera-labs/hyku_knapsack/worker:${TAG:-latest} + # Uncomment command to access container with out starting bin/worker. Useful for debugging or updating Gemfile.lock + # command: sleep infinity volumes: - node_modules:/app/samvera/hyrax-webapp/node_modules:cached - uploads:/app/samvera/hyrax-webapp/public/uploads:cached diff --git a/hyku_knapsack.gemspec b/hyku_knapsack.gemspec index 959fcf2..ffc994a 100644 --- a/hyku_knapsack.gemspec +++ b/hyku_knapsack.gemspec @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require_relative "lib/hyku_knapsack/version" Gem::Specification.new do |spec| diff --git a/hyrax-webapp b/hyrax-webapp index 4717a5b..e60efac 160000 --- a/hyrax-webapp +++ b/hyrax-webapp @@ -1 +1 @@ -Subproject commit 4717a5b576cdbc87ab000345465a8da4cf4774a8 +Subproject commit e60efacb694ccdde973a6abd0e376e7dc9c74bf6 diff --git a/lib/hyku_knapsack/engine.rb b/lib/hyku_knapsack/engine.rb index 1ba2361..74de876 100644 --- a/lib/hyku_knapsack/engine.rb +++ b/lib/hyku_knapsack/engine.rb @@ -1,13 +1,28 @@ +# frozen_string_literal: true + module HykuKnapsack class Engine < ::Rails::Engine isolate_namespace HykuKnapsack + def self.load_translations! + HykuKnapsack::Engine.root.glob("config/locales/**/*.yml").each do |path| + I18n.load_path << path.to_s + end + + # Let's have unique load_paths. Later entries in the I18n.load_path array take precendence + # over earlier entries (e.g. lower array index means lower precedence). So we need to reverse + # the array, then call uniq (which will drop duplicates that show up later in the array). + # Then reverse again. (You know, kind of like an Uno reverse battle.) + I18n.load_path = I18n.load_path.reverse.uniq.reverse + I18n.backend.reload! + end + initializer :append_migrations do |app| # only add the migrations if they are not already copied # via the rake task. Allows gem to work both with the install:migrations # and without it. if !app.root.to_s.match(root.to_s) && - app.root.join('db/migrate').children.none? {|path| path.fnmatch?("*.hyku_knapsack.rb")} + app.root.join('db/migrate').children.none? { |path| path.fnmatch?("*.hyku_knapsack.rb") } config.paths["db/migrate"].expanded.each do |expanded_path| app.config.paths["db/migrate"] << expanded_path end @@ -16,16 +31,68 @@ class Engine < ::Rails::Engine config.before_initialize do config.i18n.load_path += Dir["#{config.root}/config/locales/**/*.yml"] + + #if Hyku::Application.respond_to?(:user_devise_parameters=) + # Hyku::Application.user_devise_parameters = %i[ + # database_authenticatable + # invitable + # recoverable + # rememberable + # trackable + # validatable + # omniauthable + # ] + #end end config.after_initialize do - my_engine_root = HykuKnapsack::Engine.root.to_s - paths = ActionController::Base.view_paths.collect{|p| p.to_s} - # This is the opposite of what you usually want to do. Normally app views override engine views - # but in our case things in the Knapsack override what is in the application - paths = [my_engine_root + '/app/views'] + paths - ActionController::Base.view_paths = paths.uniq + # need collection model first + collection_decorator = HykuKnapsack::Engine.root.join("app", "models", "collection_decorator.rb").to_s + Rails.configuration.cache_classes ? require(collection_decorator) : load(collection_decorator) + + HykuKnapsack::Engine.root.glob("app/**/*_decorator*.rb").sort.each do |c| + Rails.configuration.cache_classes ? require(c) : load(c) + end + + HykuKnapsack::Engine.root.glob("lib/**/*_decorator*.rb").sort.each do |c| + Rails.configuration.cache_classes ? require(c) : load(c) + end + + # By default plain text files are not processed for text extraction. In adding + # Adventist::TextFileTextExtractionService to the beginning of the services array we are + # enabling text extraction from plain text files. + # + # https://github.com/scientist-softserv/adventist-dl/blob/97bd05946345926b2b6c706bd90e183a9d78e8ef/config/application.rb#L68-L73 + Hyrax::DerivativeService.services = [ + Adventist::TextFileTextExtractionService, + IiifPrint::PluggableDerivativeService + ] + + # This is the opposite of what you usually want to do. Normally app views override engine + # views but in our case things in the Knapsack override what is in the application. + # Furthermore we need to account for when the ApplicationController and it's descendants set + # their individual view_paths. By looping through all descendants, we ensure that we have + # the Knapsack views at the beginning of the list of view_paths. + # + # In the load sequence, when we load ApplicationController, we establish the view_path for all + # future descendants. When we then encounter a descendant, we copy the + # ApplicationController's view_path to the descendant; then later after we've encountered most + # all of the descendants we updated the ApplicationController's view_path, but that does not + # propogate to the descendants' copied view_path. + ([::ApplicationController] + ::ApplicationController.descendants).each do |klass| + paths = klass.view_paths.collect(&:to_s) + paths = [HykuKnapsack::Engine.root.join('app', 'views').to_s] + paths + klass.view_paths = paths.uniq + end ::ApplicationController.send :helper, HykuKnapsack::Engine.helpers + + ## + # Ensure that all knapsack locales are the "first choice" of keys. We've already done this in + # the catalog controller to appease the Blacklight constraint of having translations loaded. + # However, between loading those translations in the catalog controller and now, the + # underlying application and even other engines might have further amended the load path. + # This is our "best" chance to do it at the latest possible moment. + HykuKnapsack::Engine.load_translations! end end end diff --git a/lib/hyku_knapsack/version.rb b/lib/hyku_knapsack/version.rb index 0521d65..1942f9b 100644 --- a/lib/hyku_knapsack/version.rb +++ b/lib/hyku_knapsack/version.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module HykuKnapsack VERSION = "0.0.1" TEST = 'five' diff --git a/lib/tasks/hyku_knapsack_tasks.rake b/lib/tasks/hyku_knapsack_tasks.rake index e6109e3..e36341a 100644 --- a/lib/tasks/hyku_knapsack_tasks.rake +++ b/lib/tasks/hyku_knapsack_tasks.rake @@ -1,3 +1,4 @@ +# frozen_string_literal: true # desc "Explaining what the task does" # task :hyku_knapsack do # # Task goes here From a2b64c6737f3ec050cbf35982835bdcb4faece20 Mon Sep 17 00:00:00 2001 From: Shana Moore Date: Mon, 19 Feb 2024 15:35:29 -0800 Subject: [PATCH 07/15] :bug: comment out adventist reference to get the app to build Do we need to contribute back TextFileTextExtractionService? ref: - https://github.com/scientist-softserv/adventist_knapsack/blob/1321d31e4f36cb1bde420f1168f4a174ef3c1712/app/services/adventist/text_file_text_extraction_service.rb#L8 --- hyrax-webapp | 2 +- lib/hyku_knapsack/engine.rb | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/hyrax-webapp b/hyrax-webapp index e60efac..4717a5b 160000 --- a/hyrax-webapp +++ b/hyrax-webapp @@ -1 +1 @@ -Subproject commit e60efacb694ccdde973a6abd0e376e7dc9c74bf6 +Subproject commit 4717a5b576cdbc87ab000345465a8da4cf4774a8 diff --git a/lib/hyku_knapsack/engine.rb b/lib/hyku_knapsack/engine.rb index 74de876..6377401 100644 --- a/lib/hyku_knapsack/engine.rb +++ b/lib/hyku_knapsack/engine.rb @@ -46,10 +46,6 @@ def self.load_translations! end config.after_initialize do - # need collection model first - collection_decorator = HykuKnapsack::Engine.root.join("app", "models", "collection_decorator.rb").to_s - Rails.configuration.cache_classes ? require(collection_decorator) : load(collection_decorator) - HykuKnapsack::Engine.root.glob("app/**/*_decorator*.rb").sort.each do |c| Rails.configuration.cache_classes ? require(c) : load(c) end @@ -64,7 +60,6 @@ def self.load_translations! # # https://github.com/scientist-softserv/adventist-dl/blob/97bd05946345926b2b6c706bd90e183a9d78e8ef/config/application.rb#L68-L73 Hyrax::DerivativeService.services = [ - Adventist::TextFileTextExtractionService, IiifPrint::PluggableDerivativeService ] From 7537fa2518527c61198b2802f10c495176c9cbc1 Mon Sep 17 00:00:00 2001 From: Shana Moore Date: Mon, 19 Feb 2024 16:02:50 -0800 Subject: [PATCH 08/15] Update hyrax-webapp pull in updates from hyku_knapsack prime --- hyrax-webapp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyrax-webapp b/hyrax-webapp index 4717a5b..faa2d83 160000 --- a/hyrax-webapp +++ b/hyrax-webapp @@ -1 +1 @@ -Subproject commit 4717a5b576cdbc87ab000345465a8da4cf4774a8 +Subproject commit faa2d83d7f7a8cea04445d05b49ee77f22307b76 From 9bc2dc40a58aada23227828c764d6a3c4d8f90bb Mon Sep 17 00:00:00 2001 From: Shana Moore Date: Tue, 20 Feb 2024 08:02:06 -0800 Subject: [PATCH 09/15] merge in main --- hyrax-webapp | 2 +- lib/hyku_knapsack/engine.rb | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/hyrax-webapp b/hyrax-webapp index e60efac..4717a5b 160000 --- a/hyrax-webapp +++ b/hyrax-webapp @@ -1 +1 @@ -Subproject commit e60efacb694ccdde973a6abd0e376e7dc9c74bf6 +Subproject commit 4717a5b576cdbc87ab000345465a8da4cf4774a8 diff --git a/lib/hyku_knapsack/engine.rb b/lib/hyku_knapsack/engine.rb index 74de876..1452de4 100644 --- a/lib/hyku_knapsack/engine.rb +++ b/lib/hyku_knapsack/engine.rb @@ -46,10 +46,6 @@ def self.load_translations! end config.after_initialize do - # need collection model first - collection_decorator = HykuKnapsack::Engine.root.join("app", "models", "collection_decorator.rb").to_s - Rails.configuration.cache_classes ? require(collection_decorator) : load(collection_decorator) - HykuKnapsack::Engine.root.glob("app/**/*_decorator*.rb").sort.each do |c| Rails.configuration.cache_classes ? require(c) : load(c) end @@ -64,7 +60,7 @@ def self.load_translations! # # https://github.com/scientist-softserv/adventist-dl/blob/97bd05946345926b2b6c706bd90e183a9d78e8ef/config/application.rb#L68-L73 Hyrax::DerivativeService.services = [ - Adventist::TextFileTextExtractionService, + # Adventist::TextFileTextExtractionService, IiifPrint::PluggableDerivativeService ] From 0363299113f4d2e1991c0e42213dd990bc64448b Mon Sep 17 00:00:00 2001 From: Shana Moore Date: Tue, 20 Feb 2024 08:59:11 -0800 Subject: [PATCH 10/15] revert Gemfile.lock commit: https://github.com/samvera-labs/hyku_knapsack/commit/5a7c54cace96881a3963ab2fd881ca6ea3f57372 which wasn't intentional bumped rails to 7+ --- Gemfile.lock | 176 +++++++++++++++++++++++---------------------------- 1 file changed, 78 insertions(+), 98 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 433cc6f..480a615 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,83 +7,60 @@ PATH GEM remote: https://rubygems.org/ specs: - actioncable (7.0.8) - actionpack (= 7.0.8) - activesupport (= 7.0.8) + actioncable (5.2.8.1) + actionpack (= 5.2.8.1) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (7.0.8) - actionpack (= 7.0.8) - activejob (= 7.0.8) - activerecord (= 7.0.8) - activestorage (= 7.0.8) - activesupport (= 7.0.8) - mail (>= 2.7.1) - net-imap - net-pop - net-smtp - actionmailer (7.0.8) - actionpack (= 7.0.8) - actionview (= 7.0.8) - activejob (= 7.0.8) - activesupport (= 7.0.8) + actionmailer (5.2.8.1) + actionpack (= 5.2.8.1) + actionview (= 5.2.8.1) + activejob (= 5.2.8.1) mail (~> 2.5, >= 2.5.4) - net-imap - net-pop - net-smtp rails-dom-testing (~> 2.0) - actionpack (7.0.8) - actionview (= 7.0.8) - activesupport (= 7.0.8) - rack (~> 2.0, >= 2.2.4) + actionpack (5.2.8.1) + actionview (= 5.2.8.1) + activesupport (= 5.2.8.1) + rack (~> 2.0, >= 2.0.8) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (7.0.8) - actionpack (= 7.0.8) - activerecord (= 7.0.8) - activestorage (= 7.0.8) - activesupport (= 7.0.8) - globalid (>= 0.6.0) - nokogiri (>= 1.8.5) - actionview (7.0.8) - activesupport (= 7.0.8) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (5.2.8.1) + activesupport (= 5.2.8.1) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.1, >= 1.2.0) - activejob (7.0.8) - activesupport (= 7.0.8) + rails-html-sanitizer (~> 1.0, >= 1.0.3) + activejob (5.2.8.1) + activesupport (= 5.2.8.1) globalid (>= 0.3.6) - activemodel (7.0.8) - activesupport (= 7.0.8) - activerecord (7.0.8) - activemodel (= 7.0.8) - activesupport (= 7.0.8) - activestorage (7.0.8) - actionpack (= 7.0.8) - activejob (= 7.0.8) - activerecord (= 7.0.8) - activesupport (= 7.0.8) - marcel (~> 1.0) - mini_mime (>= 1.1.0) - activesupport (7.0.8) + activemodel (5.2.8.1) + activesupport (= 5.2.8.1) + activerecord (5.2.8.1) + activemodel (= 5.2.8.1) + activesupport (= 5.2.8.1) + arel (>= 9.0) + activestorage (5.2.8.1) + actionpack (= 5.2.8.1) + activerecord (= 5.2.8.1) + marcel (~> 1.0.0) + activesupport (5.2.8.1) concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 1.6, < 2) - minitest (>= 5.1) - tzinfo (~> 2.0) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + arel (9.0.0) builder (3.2.4) concurrent-ruby (1.2.2) crass (1.0.6) date (3.3.3) erubi (1.12.0) - globalid (1.2.1) - activesupport (>= 6.1) + globalid (1.1.0) + activesupport (>= 5.0) i18n (1.14.1) concurrent-ruby (~> 1.0) - loofah (2.21.4) + loofah (2.20.0) crass (~> 1.0.2) - nokogiri (>= 1.12.0) + nokogiri (>= 1.5.9) mail (2.8.1) mini_mime (>= 0.1.1) net-imap @@ -91,61 +68,64 @@ GEM net-smtp marcel (1.0.2) method_source (1.0.0) - mini_mime (1.1.5) - minitest (5.20.0) - net-imap (0.4.3) + mini_mime (1.1.2) + minitest (5.18.1) + net-imap (0.3.4) date net-protocol net-pop (0.1.2) net-protocol net-protocol (0.2.1) timeout - net-smtp (0.4.0) + net-smtp (0.3.3) net-protocol nio4r (2.5.9) - nokogiri (1.15.4-arm64-darwin) + nokogiri (1.14.4-arm64-darwin) racc (~> 1.4) - racc (1.7.2) - rack (2.2.8) + racc (1.6.2) + rack (2.2.7) rack-test (2.1.0) rack (>= 1.3) - rails (7.0.8) - actioncable (= 7.0.8) - actionmailbox (= 7.0.8) - actionmailer (= 7.0.8) - actionpack (= 7.0.8) - actiontext (= 7.0.8) - actionview (= 7.0.8) - activejob (= 7.0.8) - activemodel (= 7.0.8) - activerecord (= 7.0.8) - activestorage (= 7.0.8) - activesupport (= 7.0.8) - bundler (>= 1.15.0) - railties (= 7.0.8) - rails-dom-testing (2.2.0) - activesupport (>= 5.0.0) - minitest + rails (5.2.8.1) + actioncable (= 5.2.8.1) + actionmailer (= 5.2.8.1) + actionpack (= 5.2.8.1) + actionview (= 5.2.8.1) + activejob (= 5.2.8.1) + activemodel (= 5.2.8.1) + activerecord (= 5.2.8.1) + activestorage (= 5.2.8.1) + activesupport (= 5.2.8.1) + bundler (>= 1.3.0) + railties (= 5.2.8.1) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.0.3) + activesupport (>= 4.2.0) nokogiri (>= 1.6) - rails-html-sanitizer (1.6.0) - loofah (~> 2.21) - nokogiri (~> 1.14) - railties (7.0.8) - actionpack (= 7.0.8) - activesupport (= 7.0.8) + rails-html-sanitizer (1.5.0) + loofah (~> 2.19, >= 2.19.1) + railties (5.2.8.1) + actionpack (= 5.2.8.1) + activesupport (= 5.2.8.1) method_source - rake (>= 12.2) - thor (~> 1.0) - zeitwerk (~> 2.5) - rake (13.1.0) - thor (1.3.0) - timeout (0.4.0) - tzinfo (2.0.6) + rake (>= 0.8.7) + thor (>= 0.19.0, < 2.0) + rake (13.0.6) + sprockets (3.7.2) concurrent-ruby (~> 1.0) - websocket-driver (0.7.6) + rack (> 1, < 3) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + thor (1.2.1) + thread_safe (0.3.6) + timeout (0.3.2) + tzinfo (1.2.11) + thread_safe (~> 0.1) + websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - zeitwerk (2.6.12) PLATFORMS ruby @@ -154,4 +134,4 @@ DEPENDENCIES hyku_knapsack! BUNDLED WITH - 2.1.4 + 2.1.4 \ No newline at end of file From 536c7c6c4baba12d63761b0bac2d5d0157bb4495 Mon Sep 17 00:00:00 2001 From: Shana Moore Date: Tue, 20 Feb 2024 09:35:27 -0800 Subject: [PATCH 11/15] Revert "revert Gemfile.lock" This reverts commit 0363299113f4d2e1991c0e42213dd990bc64448b. --- Gemfile.lock | 176 ++++++++++++++++++++++++++++----------------------- 1 file changed, 98 insertions(+), 78 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 480a615..433cc6f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,60 +7,83 @@ PATH GEM remote: https://rubygems.org/ specs: - actioncable (5.2.8.1) - actionpack (= 5.2.8.1) + actioncable (7.0.8) + actionpack (= 7.0.8) + activesupport (= 7.0.8) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailer (5.2.8.1) - actionpack (= 5.2.8.1) - actionview (= 5.2.8.1) - activejob (= 5.2.8.1) + actionmailbox (7.0.8) + actionpack (= 7.0.8) + activejob (= 7.0.8) + activerecord (= 7.0.8) + activestorage (= 7.0.8) + activesupport (= 7.0.8) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.8) + actionpack (= 7.0.8) + actionview (= 7.0.8) + activejob (= 7.0.8) + activesupport (= 7.0.8) mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp rails-dom-testing (~> 2.0) - actionpack (5.2.8.1) - actionview (= 5.2.8.1) - activesupport (= 5.2.8.1) - rack (~> 2.0, >= 2.0.8) + actionpack (7.0.8) + actionview (= 7.0.8) + activesupport (= 7.0.8) + rack (~> 2.0, >= 2.2.4) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (5.2.8.1) - activesupport (= 5.2.8.1) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (7.0.8) + actionpack (= 7.0.8) + activerecord (= 7.0.8) + activestorage (= 7.0.8) + activesupport (= 7.0.8) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.0.8) + activesupport (= 7.0.8) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.0, >= 1.0.3) - activejob (5.2.8.1) - activesupport (= 5.2.8.1) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (7.0.8) + activesupport (= 7.0.8) globalid (>= 0.3.6) - activemodel (5.2.8.1) - activesupport (= 5.2.8.1) - activerecord (5.2.8.1) - activemodel (= 5.2.8.1) - activesupport (= 5.2.8.1) - arel (>= 9.0) - activestorage (5.2.8.1) - actionpack (= 5.2.8.1) - activerecord (= 5.2.8.1) - marcel (~> 1.0.0) - activesupport (5.2.8.1) + activemodel (7.0.8) + activesupport (= 7.0.8) + activerecord (7.0.8) + activemodel (= 7.0.8) + activesupport (= 7.0.8) + activestorage (7.0.8) + actionpack (= 7.0.8) + activejob (= 7.0.8) + activerecord (= 7.0.8) + activesupport (= 7.0.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (7.0.8) concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) - arel (9.0.0) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) builder (3.2.4) concurrent-ruby (1.2.2) crass (1.0.6) date (3.3.3) erubi (1.12.0) - globalid (1.1.0) - activesupport (>= 5.0) + globalid (1.2.1) + activesupport (>= 6.1) i18n (1.14.1) concurrent-ruby (~> 1.0) - loofah (2.20.0) + loofah (2.21.4) crass (~> 1.0.2) - nokogiri (>= 1.5.9) + nokogiri (>= 1.12.0) mail (2.8.1) mini_mime (>= 0.1.1) net-imap @@ -68,64 +91,61 @@ GEM net-smtp marcel (1.0.2) method_source (1.0.0) - mini_mime (1.1.2) - minitest (5.18.1) - net-imap (0.3.4) + mini_mime (1.1.5) + minitest (5.20.0) + net-imap (0.4.3) date net-protocol net-pop (0.1.2) net-protocol net-protocol (0.2.1) timeout - net-smtp (0.3.3) + net-smtp (0.4.0) net-protocol nio4r (2.5.9) - nokogiri (1.14.4-arm64-darwin) + nokogiri (1.15.4-arm64-darwin) racc (~> 1.4) - racc (1.6.2) - rack (2.2.7) + racc (1.7.2) + rack (2.2.8) rack-test (2.1.0) rack (>= 1.3) - rails (5.2.8.1) - actioncable (= 5.2.8.1) - actionmailer (= 5.2.8.1) - actionpack (= 5.2.8.1) - actionview (= 5.2.8.1) - activejob (= 5.2.8.1) - activemodel (= 5.2.8.1) - activerecord (= 5.2.8.1) - activestorage (= 5.2.8.1) - activesupport (= 5.2.8.1) - bundler (>= 1.3.0) - railties (= 5.2.8.1) - sprockets-rails (>= 2.0.0) - rails-dom-testing (2.0.3) - activesupport (>= 4.2.0) + rails (7.0.8) + actioncable (= 7.0.8) + actionmailbox (= 7.0.8) + actionmailer (= 7.0.8) + actionpack (= 7.0.8) + actiontext (= 7.0.8) + actionview (= 7.0.8) + activejob (= 7.0.8) + activemodel (= 7.0.8) + activerecord (= 7.0.8) + activestorage (= 7.0.8) + activesupport (= 7.0.8) + bundler (>= 1.15.0) + railties (= 7.0.8) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.5.0) - loofah (~> 2.19, >= 2.19.1) - railties (5.2.8.1) - actionpack (= 5.2.8.1) - activesupport (= 5.2.8.1) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.0.8) + actionpack (= 7.0.8) + activesupport (= 7.0.8) method_source - rake (>= 0.8.7) - thor (>= 0.19.0, < 2.0) - rake (13.0.6) - sprockets (3.7.2) + rake (>= 12.2) + thor (~> 1.0) + zeitwerk (~> 2.5) + rake (13.1.0) + thor (1.3.0) + timeout (0.4.0) + tzinfo (2.0.6) concurrent-ruby (~> 1.0) - rack (> 1, < 3) - sprockets-rails (3.4.2) - actionpack (>= 5.2) - activesupport (>= 5.2) - sprockets (>= 3.0.0) - thor (1.2.1) - thread_safe (0.3.6) - timeout (0.3.2) - tzinfo (1.2.11) - thread_safe (~> 0.1) - websocket-driver (0.7.5) + websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) + zeitwerk (2.6.12) PLATFORMS ruby @@ -134,4 +154,4 @@ DEPENDENCIES hyku_knapsack! BUNDLED WITH - 2.1.4 \ No newline at end of file + 2.1.4 From 01c95c14bbc503d92f2ed713843c61cf2ccd4c47 Mon Sep 17 00:00:00 2001 From: Shana Moore Date: Tue, 20 Feb 2024 10:17:50 -0800 Subject: [PATCH 12/15] Revert "Updating knapsack's Gemfile.lock" This reverts commit 5a7c54cace96881a3963ab2fd881ca6ea3f57372. --- Gemfile.lock | 178 +++++++++++++++++++++++---------------------------- 1 file changed, 79 insertions(+), 99 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 433cc6f..3461ff2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,89 +1,66 @@ PATH remote: . specs: - hyku_knapsack (0.0.1) + hyku-knapsack (0.0.1) rails (>= 5.2.0) GEM remote: https://rubygems.org/ specs: - actioncable (7.0.8) - actionpack (= 7.0.8) - activesupport (= 7.0.8) + actioncable (5.2.8.1) + actionpack (= 5.2.8.1) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (7.0.8) - actionpack (= 7.0.8) - activejob (= 7.0.8) - activerecord (= 7.0.8) - activestorage (= 7.0.8) - activesupport (= 7.0.8) - mail (>= 2.7.1) - net-imap - net-pop - net-smtp - actionmailer (7.0.8) - actionpack (= 7.0.8) - actionview (= 7.0.8) - activejob (= 7.0.8) - activesupport (= 7.0.8) + actionmailer (5.2.8.1) + actionpack (= 5.2.8.1) + actionview (= 5.2.8.1) + activejob (= 5.2.8.1) mail (~> 2.5, >= 2.5.4) - net-imap - net-pop - net-smtp rails-dom-testing (~> 2.0) - actionpack (7.0.8) - actionview (= 7.0.8) - activesupport (= 7.0.8) - rack (~> 2.0, >= 2.2.4) + actionpack (5.2.8.1) + actionview (= 5.2.8.1) + activesupport (= 5.2.8.1) + rack (~> 2.0, >= 2.0.8) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (7.0.8) - actionpack (= 7.0.8) - activerecord (= 7.0.8) - activestorage (= 7.0.8) - activesupport (= 7.0.8) - globalid (>= 0.6.0) - nokogiri (>= 1.8.5) - actionview (7.0.8) - activesupport (= 7.0.8) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (5.2.8.1) + activesupport (= 5.2.8.1) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.1, >= 1.2.0) - activejob (7.0.8) - activesupport (= 7.0.8) + rails-html-sanitizer (~> 1.0, >= 1.0.3) + activejob (5.2.8.1) + activesupport (= 5.2.8.1) globalid (>= 0.3.6) - activemodel (7.0.8) - activesupport (= 7.0.8) - activerecord (7.0.8) - activemodel (= 7.0.8) - activesupport (= 7.0.8) - activestorage (7.0.8) - actionpack (= 7.0.8) - activejob (= 7.0.8) - activerecord (= 7.0.8) - activesupport (= 7.0.8) - marcel (~> 1.0) - mini_mime (>= 1.1.0) - activesupport (7.0.8) + activemodel (5.2.8.1) + activesupport (= 5.2.8.1) + activerecord (5.2.8.1) + activemodel (= 5.2.8.1) + activesupport (= 5.2.8.1) + arel (>= 9.0) + activestorage (5.2.8.1) + actionpack (= 5.2.8.1) + activerecord (= 5.2.8.1) + marcel (~> 1.0.0) + activesupport (5.2.8.1) concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 1.6, < 2) - minitest (>= 5.1) - tzinfo (~> 2.0) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + arel (9.0.0) builder (3.2.4) concurrent-ruby (1.2.2) crass (1.0.6) date (3.3.3) erubi (1.12.0) - globalid (1.2.1) - activesupport (>= 6.1) + globalid (1.1.0) + activesupport (>= 5.0) i18n (1.14.1) concurrent-ruby (~> 1.0) - loofah (2.21.4) + loofah (2.20.0) crass (~> 1.0.2) - nokogiri (>= 1.12.0) + nokogiri (>= 1.5.9) mail (2.8.1) mini_mime (>= 0.1.1) net-imap @@ -91,67 +68,70 @@ GEM net-smtp marcel (1.0.2) method_source (1.0.0) - mini_mime (1.1.5) - minitest (5.20.0) - net-imap (0.4.3) + mini_mime (1.1.2) + minitest (5.18.1) + net-imap (0.3.4) date net-protocol net-pop (0.1.2) net-protocol net-protocol (0.2.1) timeout - net-smtp (0.4.0) + net-smtp (0.3.3) net-protocol nio4r (2.5.9) - nokogiri (1.15.4-arm64-darwin) + nokogiri (1.14.4-arm64-darwin) racc (~> 1.4) - racc (1.7.2) - rack (2.2.8) + racc (1.6.2) + rack (2.2.7) rack-test (2.1.0) rack (>= 1.3) - rails (7.0.8) - actioncable (= 7.0.8) - actionmailbox (= 7.0.8) - actionmailer (= 7.0.8) - actionpack (= 7.0.8) - actiontext (= 7.0.8) - actionview (= 7.0.8) - activejob (= 7.0.8) - activemodel (= 7.0.8) - activerecord (= 7.0.8) - activestorage (= 7.0.8) - activesupport (= 7.0.8) - bundler (>= 1.15.0) - railties (= 7.0.8) - rails-dom-testing (2.2.0) - activesupport (>= 5.0.0) - minitest + rails (5.2.8.1) + actioncable (= 5.2.8.1) + actionmailer (= 5.2.8.1) + actionpack (= 5.2.8.1) + actionview (= 5.2.8.1) + activejob (= 5.2.8.1) + activemodel (= 5.2.8.1) + activerecord (= 5.2.8.1) + activestorage (= 5.2.8.1) + activesupport (= 5.2.8.1) + bundler (>= 1.3.0) + railties (= 5.2.8.1) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.0.3) + activesupport (>= 4.2.0) nokogiri (>= 1.6) - rails-html-sanitizer (1.6.0) - loofah (~> 2.21) - nokogiri (~> 1.14) - railties (7.0.8) - actionpack (= 7.0.8) - activesupport (= 7.0.8) + rails-html-sanitizer (1.5.0) + loofah (~> 2.19, >= 2.19.1) + railties (5.2.8.1) + actionpack (= 5.2.8.1) + activesupport (= 5.2.8.1) method_source - rake (>= 12.2) - thor (~> 1.0) - zeitwerk (~> 2.5) - rake (13.1.0) - thor (1.3.0) - timeout (0.4.0) - tzinfo (2.0.6) + rake (>= 0.8.7) + thor (>= 0.19.0, < 2.0) + rake (13.0.6) + sprockets (3.7.2) concurrent-ruby (~> 1.0) - websocket-driver (0.7.6) + rack (> 1, < 3) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + thor (1.2.1) + thread_safe (0.3.6) + timeout (0.3.2) + tzinfo (1.2.11) + thread_safe (~> 0.1) + websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - zeitwerk (2.6.12) PLATFORMS ruby DEPENDENCIES - hyku_knapsack! + hyku-knapsack! BUNDLED WITH 2.1.4 From 96a43bf64ceb155f83fe7250bb985fb3f2d4cb80 Mon Sep 17 00:00:00 2001 From: Shana Moore Date: Tue, 20 Feb 2024 11:03:12 -0800 Subject: [PATCH 13/15] Update Gemfile.lock --- Gemfile.lock | 1290 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1267 insertions(+), 23 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3461ff2..fd96a5d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,60 @@ +GIT + remote: https://github.com/active-elastic-job/active-elastic-job.git + revision: ec51c5d9dedc4a1b47f2db41f26d5fceb251e979 + ref: ec51c5d9dedc4a1b47f2db41f26d5fceb251e979 + specs: + active_elastic_job (2.0.1) + aws-sdk-sqs (~> 1) + rails (>= 4.2) + +GIT + remote: https://github.com/samvera-labs/hyrax-doi.git + revision: 8fb839af0517096bb05f09925fe1aa77fe32b84a + branch: main + specs: + hyrax-doi (0.2.0) + bolognese (~> 1.8, >= 1.8.6) + flipflop (~> 2.3) + hyrax (>= 2.9, < 4.0) + rails (~> 5.2.4, >= 5.2.4.3) + +GIT + remote: https://github.com/samvera-labs/hyrax-iiif_av.git + revision: 6273f90016c153d2add33f85cc24285d51a25382 + branch: main + specs: + hyrax-iiif_av (0.2.0) + blacklight + hyrax (>= 2.9, < 4.0) + iiif_manifest (> 0.5) + rails (~> 5.1) + +GIT + remote: https://github.com/scientist-softserv/iiif_print.git + revision: b39296dc066867a0017f0ab1dbfcf44d7e656e50 + branch: main + specs: + iiif_print (1.0.0) + blacklight_iiif_search (>= 1.0, < 3.0) + derivative-rodeo (~> 0.5) + hyrax (>= 2.5, < 6) + nokogiri (>= 1.13.2) + rdf-vocab (~> 3.0) + +GIT + remote: https://github.com/stanhu/omniauth-cas.git + revision: 4211e6d05941b4a981f9a36b49ec166cecd0e271 + ref: 4211e6d05941b4a981f9a36b49ec166cecd0e271 + specs: + omniauth-cas (2.0.0) + addressable (~> 2.3) + nokogiri (~> 1.5) + omniauth (>= 1.2, < 3) + PATH remote: . specs: - hyku-knapsack (0.0.1) + hyku_knapsack (0.0.1) rails (>= 5.2.0) GEM @@ -30,15 +83,41 @@ GEM erubi (~> 1.4) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.3) + active-fedora (13.3.0) + active-triples (>= 0.11.0, < 2.0.0) + activemodel (>= 5.1) + activesupport (>= 5.1) + deprecation + faraday (~> 0.12) + faraday-encoding (>= 0.0.5) + ldp (>= 0.7.0, < 2) + rsolr (>= 1.1.2, < 3) + ruby-progressbar (~> 1.0) + active-triples (1.2.0) + activemodel (>= 3.0.0) + activesupport (>= 3.0.0) + rdf (>= 2.0.2, < 4.0) + rdf-vocab (>= 2.0, < 4.0) + active_encode (0.8.2) + rails + sprockets (< 4) activejob (5.2.8.1) activesupport (= 5.2.8.1) globalid (>= 0.3.6) activemodel (5.2.8.1) activesupport (= 5.2.8.1) + activemodel-serializers-xml (1.0.2) + activemodel (> 5.x) + activesupport (> 5.x) + builder (~> 3.1) activerecord (5.2.8.1) activemodel (= 5.2.8.1) activesupport (= 5.2.8.1) arel (>= 9.0) + activerecord-import (1.5.1) + activerecord (>= 4.2) + activerecord-nulldb-adapter (1.0.1) + activerecord (>= 5.2.0, < 7.2) activestorage (5.2.8.1) actionpack (= 5.2.8.1) activerecord (= 5.2.8.1) @@ -48,44 +127,796 @@ GEM i18n (>= 0.7, < 2) minitest (~> 5.1) tzinfo (~> 1.1) + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) + aes_key_wrap (1.1.0) + almond-rails (0.3.0) + rails (>= 4.2) + amazing_print (1.5.0) + apartment (2.2.1) + activerecord (>= 3.1.2, < 6.0) + parallel (>= 0.7.1) + public_suffix (>= 2) + rack (>= 1.3.6) arel (9.0.0) + ast (2.4.2) + attr_required (1.0.2) + autoprefixer-rails (10.4.16.0) + execjs (~> 2) + awesome_nested_set (3.6.0) + activerecord (>= 4.0.0, < 7.2) + aws-eventstream (1.3.0) + aws-partitions (1.894.0) + aws-sdk-core (3.191.2) + aws-eventstream (~> 1, >= 1.3.0) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.8) + base64 + jmespath (~> 1, >= 1.6.1) + aws-sdk-kms (1.77.0) + aws-sdk-core (~> 3, >= 3.191.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.143.0) + aws-sdk-core (~> 3, >= 3.191.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.8) + aws-sdk-sqs (1.70.0) + aws-sdk-core (~> 3, >= 3.191.0) + aws-sigv4 (~> 1.1) + aws-sigv4 (1.8.0) + aws-eventstream (~> 1, >= 1.0.2) + babel-source (5.8.35) + babel-transpiler (0.7.0) + babel-source (>= 4.0, < 6) + execjs (~> 2.0) + bagit (0.4.6) + docopt (~> 0.5.0) + validatable (~> 1.6) + base64 (0.2.0) + bcp47 (0.3.3) + i18n + bcrypt (3.1.20) + benchmark_methods (0.7) + better_html (1.0.16) + actionview (>= 4.0) + activesupport (>= 4.0) + ast (~> 2.0) + erubi (~> 1.4) + html_tokenizer (~> 0.0.6) + parser (>= 2.4) + smart_properties + bibtex-ruby (6.1.0) + latex-decode (~> 0.0) + racc (~> 1.7) + bigdecimal (3.1.6) + bindata (2.5.0) + bindex (0.8.1) + blacklight (6.25.0) + bootstrap-sass (~> 3.2) + deprecation + globalid + jbuilder (~> 2.7) + kaminari (>= 0.15) + nokogiri (~> 1.6) + rails (>= 4.2, < 6) + rsolr (>= 1.0.6, < 3) + twitter-typeahead-rails (= 0.11.1.pre.corejavascript) + blacklight-access_controls (0.6.2) + blacklight (~> 6.0) + cancancan (~> 1.8) + deprecation (~> 1.0) + blacklight-gallery (0.12.0) + blacklight (~> 6.3) + bootstrap-sass (~> 3.0) + openseadragon (>= 0.2.0) + rails + blacklight_iiif_search (1.0.0) + blacklight (~> 6.0) + iiif-presentation + rails (>= 4.2, < 6) + blacklight_oai_provider (6.1.1) + blacklight (~> 6.0) + oai (~> 1.0) + bolognese (1.11.5) + activesupport (>= 4.2.5) + benchmark_methods (~> 0.7) + bibtex-ruby (>= 5.1.0) + builder (~> 3.2, >= 3.2.2) + citeproc-ruby (~> 1.1, >= 1.1.12) + colorize (~> 0.8.1) + concurrent-ruby (~> 1.1, >= 1.1.5) + csl-styles (~> 1.0, >= 1.0.1.10) + edtf (~> 3.0, >= 3.0.4) + gender_detector (~> 0.1.2) + iso8601 (~> 0.9.1) + json-ld-preloaded (~> 3.1, >= 3.1.3) + jsonlint (~> 0.3.0) + loofah (~> 2.0, >= 2.0.3) + maremma (>= 4.9.4, < 5) + namae (~> 1.0) + nokogiri (>= 1.13.2, < 1.14) + oj (~> 3.10) + oj_mimic_json (~> 1.0, >= 1.0.1) + postrank-uri (~> 1.0, >= 1.0.18) + rdf-rdfxml (~> 3.1) + rdf-turtle (~> 3.1) + thor (>= 0.19) + bootstrap-datepicker-rails (1.10.0.1) + railties (>= 3.0) + bootstrap-sass (3.4.1) + autoprefixer-rails (>= 5.2.1) + sassc (>= 2.0.0) + breadcrumbs_on_rails (3.0.1) + browse-everything (1.3.0) + addressable (~> 2.5) + aws-sdk-s3 + dropbox_api (>= 0.1.20) + google-apis-drive_v3 + googleauth (>= 0.6.6, < 2.0) + rails (>= 4.2, < 7.2) + ruby-box + signet (~> 0.8) + typhoeus builder (3.2.4) - concurrent-ruby (1.2.2) + bulkrax (5.5.1) + bagit (~> 0.4) + coderay + iso8601 (~> 0.9.0) + kaminari + language_list (~> 1.2, >= 1.2.1) + libxml-ruby (~> 3.2.4) + loofah (>= 2.2.3) + oai (>= 0.4, < 2.x) + rack (>= 2.0.6) + rails (>= 5.1.6) + rdf (>= 2.0.2, < 4.0) + rubyzip + simple_form + byebug (11.1.3) + cancancan (1.17.0) + capybara (3.39.2) + addressable + matrix + mini_mime (>= 0.1.3) + nokogiri (~> 1.8) + rack (>= 1.6.0) + rack-test (>= 0.6.3) + regexp_parser (>= 1.5, < 3.0) + xpath (~> 3.2) + capybara-screenshot (1.0.26) + capybara (>= 1.0, < 4) + launchy + carrierwave (1.3.4) + activemodel (>= 4.0.0) + activesupport (>= 4.0.0) + mime-types (>= 1.16) + ssrf_filter (~> 1.0, < 1.1.0) + carrierwave-aws (1.4.0) + aws-sdk-s3 (~> 1.0) + carrierwave (>= 0.7, < 2.1) + citeproc (1.0.10) + namae (~> 1.0) + citeproc-ruby (1.1.14) + citeproc (~> 1.0, >= 1.0.9) + csl (~> 1.6) + clipboard-rails (1.7.1) + cocoon (1.2.15) + codemirror-rails (5.16.0) + railties (>= 3.0, < 6.0) + coderay (1.1.3) + coffee-rails (4.2.2) + coffee-script (>= 2.2.0) + railties (>= 4.0.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.12.2) + colorize (0.8.1) + concurrent-ruby (1.2.3) + connection_pool (2.4.1) + crack (1.0.0) + bigdecimal + rexml crass (1.0.6) - date (3.3.3) + csl (1.6.0) + namae (~> 1.0) + rexml + csl-styles (1.0.1.11) + csl (~> 1.0) + database_cleaner (2.0.2) + database_cleaner-active_record (>= 2, < 3) + database_cleaner-active_record (2.1.0) + activerecord (>= 5.a) + database_cleaner-core (~> 2.0.0) + database_cleaner-core (2.0.1) + date (3.3.4) + declarative (0.0.20) + declarative-builder (0.1.0) + declarative-option (< 0.2.0) + declarative-option (0.1.0) + deprecation (1.1.0) + activesupport + derivative-rodeo (0.5.3) + activesupport (>= 5) + aws-sdk-s3 + aws-sdk-sqs + httparty + marcel + mime-types + mini_magick + nokogiri + devise (4.9.3) + bcrypt (~> 3.0) + orm_adapter (~> 0.1) + railties (>= 4.1.0) + responders + warden (~> 1.2.3) + devise-guests (0.8.2) + devise + devise-i18n (1.12.0) + devise (>= 4.9.0) + devise_invitable (1.7.5) + actionmailer (>= 4.1.0) + devise (>= 4.0.0) + diff-lcs (1.5.1) + disposable (0.4.7) + declarative (>= 0.0.9, < 1.0.0) + declarative-builder (< 0.2.0) + declarative-option (< 0.2.0) + representable (>= 2.4.0, <= 3.1.0) + uber (< 0.2.0) + docile (1.4.0) + docopt (0.5.0) + draper (4.0.2) + actionpack (>= 5.0) + activemodel (>= 5.0) + activemodel-serializers-xml (>= 1.0) + activesupport (>= 5.0) + request_store (>= 1.0) + ruby2_keywords + dropbox_api (0.1.21) + faraday (< 3.0) + oauth2 (~> 1.1) + dry-configurable (0.16.1) + dry-core (~> 0.6) + zeitwerk (~> 2.6) + dry-container (0.11.0) + concurrent-ruby (~> 1.0) + dry-core (0.9.1) + concurrent-ruby (~> 1.0) + zeitwerk (~> 2.6) + dry-equalizer (0.3.0) + dry-events (0.2.0) + concurrent-ruby (~> 1.0) + dry-core (~> 0.4) + dry-equalizer (~> 0.2) + dry-inflector (0.3.0) + dry-initializer (3.1.1) + dry-logic (1.3.0) + concurrent-ruby (~> 1.0) + dry-core (~> 0.9, >= 0.9) + zeitwerk (~> 2.6) + dry-matcher (0.9.0) + dry-core (~> 0.4, >= 0.4.8) + dry-monads (1.4.0) + concurrent-ruby (~> 1.0) + dry-core (~> 0.7) + dry-schema (1.11.3) + concurrent-ruby (~> 1.0) + dry-configurable (~> 0.16, >= 0.16) + dry-core (~> 0.9, >= 0.9) + dry-initializer (~> 3.0) + dry-logic (~> 1.3) + dry-types (~> 1.6) + zeitwerk (~> 2.6) + dry-struct (1.5.2) + dry-core (~> 0.9, >= 0.9) + dry-types (~> 1.6) + ice_nine (~> 0.11) + zeitwerk (~> 2.6) + dry-transaction (0.13.3) + dry-container (>= 0.2.8) + dry-events (>= 0.1.0) + dry-matcher (>= 0.7.0) + dry-monads (>= 0.4.0) + dry-types (1.6.1) + concurrent-ruby (~> 1.0) + dry-container (~> 0.3) + dry-core (~> 0.9, >= 0.9) + dry-inflector (~> 0.1, >= 0.1.2) + dry-logic (~> 1.3, >= 1.3) + zeitwerk (~> 2.6) + dry-validation (1.9.0) + concurrent-ruby (~> 1.0) + dry-container (~> 0.7, >= 0.7.1) + dry-core (~> 0.9, >= 0.9) + dry-initializer (~> 3.0) + dry-schema (~> 1.11, >= 1.11.0) + zeitwerk (~> 2.6) + easy_translate (0.5.1) + thread + thread_safe + ebnf (2.2.1) + amazing_print (~> 1.2) + htmlentities (~> 4.3) + rdf (~> 3.1) + scanf (~> 1.0) + sxp (~> 1.1) + unicode-types (~> 1.6) + edtf (3.1.1) + activesupport (>= 3.0, < 8.0) + equivalent-xml (0.6.0) + nokogiri (>= 1.4.3) erubi (1.12.0) + ethon (0.16.0) + ffi (>= 1.15.0) + excon (0.71.1) + execjs (2.9.1) + factory_bot (6.4.5) + activesupport (>= 5.0.0) + factory_bot_rails (6.4.3) + factory_bot (~> 6.4) + railties (>= 5.0.0) + faraday (0.17.6) + multipart-post (>= 1.2, < 3) + faraday-encoding (0.0.5) + faraday + faraday_middleware (0.14.0) + faraday (>= 0.7.4, < 1.0) + fcrepo_wrapper (0.9.0) + ruby-progressbar + ffi (1.16.3) + flipflop (2.6.0) + activesupport (>= 4.0) + flot-rails (0.0.7) + jquery-rails + flutie (2.2.0) + font-awesome-rails (4.7.0.8) + railties (>= 3.2, < 8.0) + gender_detector (0.1.2) + unicode_utils (>= 1.3.0) + geocoder (1.8.2) globalid (1.1.0) activesupport (>= 5.0) + google-apis-core (0.11.3) + addressable (~> 2.5, >= 2.5.1) + googleauth (>= 0.16.2, < 2.a) + httpclient (>= 2.8.1, < 3.a) + mini_mime (~> 1.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.a) + rexml + google-apis-drive_v3 (0.46.0) + google-apis-core (>= 0.11.0, < 2.a) + googleauth (1.8.1) + faraday (>= 0.17.3, < 3.a) + jwt (>= 1.4, < 3.0) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (>= 0.16, < 2.a) + haml (5.2.2) + temple (>= 0.8.0) + tilt + hamster (3.0.0) + concurrent-ruby (~> 1.0) + hashdiff (1.1.0) + hashie (5.0.0) + highline (2.1.0) + hiredis (0.6.3) + html_tokenizer (0.0.7) + htmlentities (4.3.4) + http_logger (0.7.0) + httparty (0.21.0) + mini_mime (>= 1.0.0) + multi_xml (>= 0.5.2) + httpclient (2.8.3) + hydra-access-controls (11.0.7) + active-fedora (>= 10.0.0) + activesupport (>= 4, < 6) + blacklight (>= 5.16) + blacklight-access_controls (~> 0.6.0) + cancancan (~> 1.8) + deprecation (~> 1.0) + hydra-core (11.0.7) + hydra-access-controls (= 11.0.7) + railties (>= 4.0.0, < 6) + hydra-derivatives (3.7.0) + active-fedora (>= 11.5.6, != 13.2.1, != 13.2.0, != 13.1.3, != 13.1.2, != 13.1.1, != 13.1.0, != 13.0.0, != 12.2.1, != 12.2.0, != 12.1.1, != 12.1.0, != 12.0.3, != 12.0.2, != 12.0.1, != 12.0.0) + active_encode (~> 0.1) + activesupport (>= 4.0, < 7) + addressable (~> 2.5) + deprecation + mime-types (> 2.0, < 4.0) + mini_magick (>= 3.2, < 5) + hydra-editor (5.0.5) + active-fedora (>= 9.0.0) + activerecord (~> 5.0) + almond-rails (~> 0.1) + cancancan (~> 1.8) + rails (>= 5, < 6) + simple_form (>= 4.1.0, < 6.0) + sprockets (~> 3.7) + sprockets-es6 + hydra-file_characterization (1.1.2) + activesupport (>= 3.0.0) + hydra-head (11.0.7) + hydra-access-controls (= 11.0.7) + hydra-core (= 11.0.7) + rails (>= 5.2, < 6.1) + hydra-pcdm (1.3.0) + active-fedora (>= 10, < 15) + mime-types (>= 1) + rdf-vocab + hydra-works (2.1.0) + activesupport (>= 5.2, < 7.1) + hydra-derivatives (~> 3.6) + hydra-file_characterization (~> 1.0) + hydra-pcdm (>= 0.9) + hyrax (3.5.0) + active-fedora (~> 13.1, >= 13.1.2) + almond-rails (~> 0.1) + awesome_nested_set (~> 3.1) + blacklight (~> 6.14) + blacklight-gallery (~> 0.7) + breadcrumbs_on_rails (~> 3.0) + browse-everything (>= 0.16, < 2.0) + carrierwave (~> 1.0) + clipboard-rails (~> 1.5) + draper (~> 4.0) + dry-equalizer (~> 0.2) + dry-events (~> 0.2.0) + dry-monads (< 1.5) + dry-struct (~> 1.0) + dry-transaction (~> 0.11) + dry-validation (~> 1.3) + flipflop (~> 2.3) + flot-rails (~> 0.0.6) + font-awesome-rails (~> 4.2) + hydra-derivatives (~> 3.3) + hydra-editor (~> 5.0, >= 5.0.4) + hydra-file_characterization (~> 1.1.2) + hydra-head (~> 11.0, >= 11.0.1) + hydra-works (>= 0.16) + iiif_manifest (>= 0.3, < 2.0) + jquery-datatables-rails (~> 3.4) + jquery-ui-rails (~> 6.0) + json-ld (< 3.2) + json-schema + kaminari_route_prefix (~> 0.1.1) + legato (~> 0.3) + linkeddata + mailboxer (~> 0.12) + nest (~> 3.1) + noid-rails (~> 3.0.0) + oauth + oauth2 (~> 1.2) + posix-spawn + power_converter (~> 0.1, >= 0.1.2) + psych (~> 3.3) + qa (~> 5.5, >= 5.5.1) + rails (~> 5.0) + rails_autolink (~> 1.1) + rdf-rdfxml + rdf-vocab (~> 3.0) + redis (~> 4.0) + redis-namespace (~> 1.5) + redlock (>= 0.1.2) + reform (~> 2.3) + reform-rails (~> 0.2.0) + retriable (>= 2.9, < 4.0) + samvera-nesting_indexer (~> 2.0) + sass-rails (~> 5.0) + select2-rails (~> 3.5) + signet + tinymce-rails (~> 5.10) + valkyrie (~> 2, >= 2.1.1) i18n (1.14.1) concurrent-ruby (~> 1.0) - loofah (2.20.0) + i18n-debug (1.2.0) + i18n (< 2) + i18n-tasks (1.0.12) + activesupport (>= 4.0.2) + ast (>= 2.1.0) + better_html (>= 1.0, < 3.0) + erubi + highline (>= 2.0.0) + i18n + parser (>= 2.2.3.0) + rails-i18n + rainbow (>= 2.2.2, < 4.0) + terminal-table (>= 1.5.1) + ice_nine (0.11.2) + iiif-presentation (1.1.0) + activesupport (>= 3.2.18) + faraday (>= 0.9) + json + iiif_manifest (1.4.0) + activesupport (>= 4) + iso-639 (0.3.6) + iso8601 (0.9.1) + jbuilder (2.11.5) + actionview (>= 5.0.0) + activesupport (>= 5.0.0) + jmespath (1.6.2) + jquery-datatables-rails (3.4.0) + actionpack (>= 3.1) + jquery-rails + railties (>= 3.1) + sass-rails + jquery-rails (4.6.0) + rails-dom-testing (>= 1, < 3) + railties (>= 4.2.0) + thor (>= 0.14, < 2.0) + jquery-ui-rails (6.0.1) + railties (>= 3.2.16) + json (2.7.1) + json-canonicalization (0.3.1) + json-jwt (1.15.3) + activesupport (>= 4.2) + aes_key_wrap + bindata + httpclient + json-ld (3.1.10) + htmlentities (~> 4.3) + json-canonicalization (~> 0.2) + link_header (~> 0.0, >= 0.0.8) + multi_json (~> 1.14) + rack (~> 2.0) + rdf (~> 3.1) + json-ld-preloaded (3.1.6) + json-ld (~> 3.1) + rdf (~> 3.1) + json-schema (4.1.1) + addressable (>= 2.8) + jsonlint (0.3.0) + oj (~> 3) + optimist (~> 3) + jwt (2.8.0) + base64 + kaminari (1.2.2) + activesupport (>= 4.1.0) + kaminari-actionview (= 1.2.2) + kaminari-activerecord (= 1.2.2) + kaminari-core (= 1.2.2) + kaminari-actionview (1.2.2) + actionview + kaminari-core (= 1.2.2) + kaminari-activerecord (1.2.2) + activerecord + kaminari-core (= 1.2.2) + kaminari-core (1.2.2) + kaminari_route_prefix (0.1.1) + kaminari (~> 1.0) + language_list (1.2.1) + latex-decode (0.4.0) + launchy (2.5.2) + addressable (~> 2.8) + ld-patch (3.1.3) + ebnf (~> 2.1) + rdf (~> 3.1) + rdf-xsd (~> 3.1) + sparql (~> 3.1) + sxp (~> 1.1) + ldp (1.0.3) + deprecation + faraday + http_logger + json-ld + rdf (>= 1.1) + rdf-isomorphic + rdf-turtle + rdf-vocab (>= 0.8) + slop + ldpath (1.2.0) + nokogiri (~> 1.8) + parslet + rdf (~> 3.0) + rdf-vocab (~> 3.0) + legato (0.7.0) + multi_json + libxml-ruby (3.2.4) + link_header (0.0.8) + linkeddata (3.1.6) + equivalent-xml (~> 0.6) + json-ld (~> 3.1, >= 3.1.10) + json-ld-preloaded (~> 3.1, >= 3.1.6) + ld-patch (~> 3.1, >= 3.1.3) + nokogiri (~> 1.12) + rdf (~> 3.1, >= 3.1.15) + rdf-aggregate-repo (~> 3.1) + rdf-isomorphic (~> 3.1, >= 3.1.1) + rdf-json (~> 3.1) + rdf-microdata (~> 3.1, >= 3.1.4) + rdf-n3 (~> 3.1, >= 3.1.2) + rdf-normalize (~> 0.4) + rdf-ordered-repo (~> 3.1, >= 3.1.1) + rdf-rdfa (~> 3.1, >= 3.1.3) + rdf-rdfxml (~> 3.1, >= 3.1.1) + rdf-reasoner (~> 0.7, >= 0.7.2) + rdf-tabular (~> 3.1, >= 3.1.1) + rdf-trig (~> 3.1, >= 3.1.2) + rdf-trix (~> 3.1, >= 3.1.1) + rdf-turtle (~> 3.1, >= 3.1.3) + rdf-vocab (~> 3.1, >= 3.1.14) + rdf-xsd (~> 3.1, >= 3.1.1) + shacl (~> 0.1, >= 0.1.1) + shex (~> 0.6, >= 0.6.4) + sparql (~> 3.1, >= 3.1.8) + sparql-client (~> 3.1, >= 3.1.2) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + logger (1.6.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) crass (~> 1.0.2) - nokogiri (>= 1.5.9) + nokogiri (>= 1.12.0) mail (2.8.1) mini_mime (>= 0.1.1) net-imap net-pop net-smtp + mailboxer (0.15.1) + carrierwave (>= 0.5.8) + rails (>= 5.0.0) marcel (1.0.2) + maremma (4.9.8) + activesupport (>= 4.2.5) + addressable (>= 2.3.6) + builder (~> 3.2, >= 3.2.2) + excon (~> 0.71.0) + faraday (~> 0.17.3) + faraday-encoding (~> 0.0.4) + faraday_middleware (~> 0.14.0) + nokogiri (>= 1.11.2, < 1.14.0) + oj (>= 2.8.3) + oj_mimic_json (~> 1.0, >= 1.0.1) + matrix (0.4.2) method_source (1.0.0) - mini_mime (1.1.2) - minitest (5.18.1) - net-imap (0.3.4) + mime-types (3.5.2) + mime-types-data (~> 3.2015) + mime-types-data (3.2024.0206) + mini_magick (4.12.0) + mini_mime (1.1.5) + mini_portile2 (2.8.5) + minitest (5.22.2) + mods (2.4.1) + edtf + iso-639 + nokogiri (>= 1.6.6) + nom-xml (~> 1.0) + multi_json (1.15.0) + multi_xml (0.6.0) + multipart-post (2.4.0) + namae (1.2.0) + racc (~> 1.7) + negative_captcha (0.5) + actionpack + activesupport + nest (3.2.0) + redic + net-http-persistent (4.0.2) + connection_pool (~> 2.2) + net-imap (0.4.10) date net-protocol net-pop (0.1.2) net-protocol - net-protocol (0.2.1) + net-protocol (0.2.2) timeout - net-smtp (0.3.3) + net-smtp (0.4.0.1) net-protocol - nio4r (2.5.9) - nokogiri (1.14.4-arm64-darwin) + nio4r (2.7.0) + noid (0.9.0) + noid-rails (3.0.3) + actionpack (>= 5.0.0, < 7) + noid (~> 0.9) + nokogiri (1.13.10) + mini_portile2 (~> 2.8.0) racc (~> 1.4) - racc (1.6.2) - rack (2.2.7) - rack-test (2.1.0) - rack (>= 1.3) + nom-xml (1.2.0) + i18n + nokogiri + oai (1.1.0) + builder (>= 3.1.0) + faraday + faraday_middleware + oauth (1.1.0) + oauth-tty (~> 1.0, >= 1.0.1) + snaky_hash (~> 2.0) + version_gem (~> 1.1) + oauth-tty (1.0.5) + version_gem (~> 1.1, >= 1.1.1) + oauth2 (1.4.11) + faraday (>= 0.17.3, < 3.0) + jwt (>= 1.0, < 3.0) + multi_json (~> 1.3) + multi_xml (~> 0.5) + rack (>= 1.2, < 4) + oj (3.16.3) + bigdecimal (>= 3.0) + oj_mimic_json (1.0.1) + okcomputer (1.18.5) + omniauth (2.1.2) + hashie (>= 3.4.6) + rack (>= 2.2.3) + rack-protection + omniauth-multi-provider (0.4.0) + omniauth + omniauth-rails_csrf_protection (1.0.1) + actionpack (>= 4.2) + omniauth (~> 2.0) + omniauth-saml (2.1.0) + omniauth (~> 2.0) + ruby-saml (~> 1.12) + omniauth_openid_connect (0.6.1) + omniauth (>= 1.9, < 3) + openid_connect (~> 1.1) + openid_connect (1.4.2) + activemodel + attr_required (>= 1.0.0) + json-jwt (>= 1.15.0) + net-smtp + rack-oauth2 (~> 1.21) + swd (~> 1.3) + tzinfo + validate_email + validate_url + webfinger (~> 1.2) + openseadragon (0.6.0) + rails (> 3.2.0) + optimist (3.1.0) + orm_adapter (0.5.0) + os (1.1.4) + parallel (1.24.0) + parser (2.5.3.0) + ast (~> 2.4.0) + parslet (2.0.0) + pg (1.5.5) + posix-spawn (0.3.15) + postrank-uri (1.1) + addressable (>= 2.4.0) + nokogiri (>= 1.8.0) + public_suffix (>= 4.0.0, < 5) + power_converter (0.1.2) + powerpack (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + psych (3.3.4) + public_suffix (4.0.7) + puma (5.6.8) + nio4r (~> 2.0) + qa (5.11.0) + activerecord-import + deprecation + faraday (< 3.0, != 2.0.0) + geocoder + ldpath + nokogiri (~> 1.6) + rails (>= 5.0, < 7.2) + rdf + racc (1.7.3) + rack (2.2.8) + rack-oauth2 (1.21.3) + activesupport + attr_required + httpclient + json-jwt (>= 1.11.0) + rack (>= 2.1.0) + rack-protection (3.2.0) + base64 (>= 0.1.0) + rack (~> 2.2, >= 2.2.4) + rack-test (0.7.0) + rack (>= 1.0, < 3) rails (5.2.8.1) actioncable (= 5.2.8.1) actionmailer (= 5.2.8.1) @@ -99,39 +930,452 @@ GEM bundler (>= 1.3.0) railties (= 5.2.8.1) sprockets-rails (>= 2.0.0) - rails-dom-testing (2.0.3) - activesupport (>= 4.2.0) + rails-controller-testing (1.0.5) + actionpack (>= 5.0.1.rc1) + actionview (>= 5.0.1.rc1) + activesupport (>= 5.0.1.rc1) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest nokogiri (>= 1.6) rails-html-sanitizer (1.5.0) loofah (~> 2.19, >= 2.19.1) + rails-i18n (5.1.3) + i18n (>= 0.7, < 2) + railties (>= 5.0, < 6) + rails_autolink (1.1.8) + actionview (> 3.1) + activesupport (> 3.1) + railties (> 3.1) railties (5.2.8.1) actionpack (= 5.2.8.1) activesupport (= 5.2.8.1) method_source rake (>= 0.8.7) thor (>= 0.19.0, < 2.0) - rake (13.0.6) + rainbow (3.1.1) + rake (13.1.0) + rb-fsevent (0.11.2) + rb-inotify (0.10.1) + ffi (~> 1.0) + rdf (3.1.15) + hamster (~> 3.0) + link_header (~> 0.0, >= 0.0.8) + rdf-aggregate-repo (3.1.0) + rdf (~> 3.1) + rdf-isomorphic (3.1.1) + rdf (~> 3.1) + rdf-json (3.1.0) + rdf (~> 3.1) + rdf-microdata (3.1.4) + htmlentities (~> 4.3) + nokogiri (~> 1.12) + rdf (~> 3.1, >= 3.1.13) + rdf-rdfa (~> 3.1, >= 3.1.3) + rdf-xsd (~> 3.1) + rdf-n3 (3.1.2) + ebnf (~> 2.1) + rdf (~> 3.1, >= 3.1.8) + sparql (~> 3.1, >= 3.1.4) + sxp (~> 1.1) + rdf-normalize (0.4.0) + rdf (~> 3.1) + rdf-ordered-repo (3.1.1) + rdf (~> 3.1) + rdf-rdfa (3.1.3) + haml (~> 5.2) + htmlentities (~> 4.3) + rdf (~> 3.1, >= 3.1.13) + rdf-aggregate-repo (~> 3.1) + rdf-vocab (~> 3.1, >= 3.1.11) + rdf-xsd (~> 3.1) + rdf-rdfxml (3.1.1) + htmlentities (~> 4.3) + rdf (~> 3.1) + rdf-rdfa (~> 3.1) + rdf-xsd (~> 3.1) + rdf-reasoner (0.7.2) + rdf (~> 3.1, >= 3.1.12) + rdf-xsd (~> 3.1) + rdf-tabular (3.1.1) + addressable (~> 2.3) + bcp47 (~> 0.3, >= 0.3.3) + json-ld (~> 3.1) + rdf (~> 3.1) + rdf-vocab (~> 3.1) + rdf-xsd (~> 3.1) + rdf-trig (3.1.2) + ebnf (~> 2.1) + rdf (~> 3.1) + rdf-turtle (~> 3.1) + rdf-trix (3.1.1) + rdf (~> 3.1) + rdf-xsd (~> 3.1) + rdf-turtle (3.1.3) + ebnf (~> 2.1) + rdf (~> 3.1, >= 3.1.8) + rdf-vocab (3.1.14) + rdf (~> 3.1, >= 3.1.12) + rdf-xsd (3.1.1) + rdf (~> 3.1) + rexml (~> 3.2) + redic (1.5.3) + hiredis + redis (4.8.1) + redis-namespace (1.11.0) + redis (>= 4) + redlock (1.3.2) + redis (>= 3.0.0, < 6.0) + reform (2.5.0) + disposable (>= 0.4.2, < 0.5.0) + representable (>= 2.4.0, < 3.1.0) + uber (< 0.2.0) + reform-rails (0.2.6) + activemodel (>= 5.0) + reform (>= 2.3.1, < 3.0.0) + regexp_parser (2.9.0) + representable (3.0.4) + declarative (< 0.1.0) + declarative-option (< 0.2.0) + uber (< 0.2.0) + request_store (1.6.0) + rack (>= 1.4) + responders (3.1.1) + actionpack (>= 5.2) + railties (>= 5.2) + retriable (3.1.2) + rexml (3.2.6) + riiif (1.7.1) + deprecation (>= 1.0.0) + railties (>= 4.2, < 6) + rolify (6.0.1) + rsolr (2.5.0) + builder (>= 2.1.2) + faraday (>= 0.9, < 3, != 2.0.0) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-activemodel-mocks (1.2.0) + activemodel (>= 3.0) + activesupport (>= 3.0) + rspec-mocks (>= 2.99, < 4.0) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-its (1.3.0) + rspec-core (>= 3.0.0) + rspec-expectations (>= 3.0.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-rails (5.1.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + railties (>= 5.2) + rspec-core (~> 3.10) + rspec-expectations (~> 3.10) + rspec-mocks (~> 3.10) + rspec-support (~> 3.10) + rspec-retry (0.6.2) + rspec-core (> 3.3) + rspec-support (3.13.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (0.52.1) + parallel (~> 1.10) + parser (>= 2.4.0.2, < 3.0) + powerpack (~> 0.1) + rainbow (>= 2.2.2, < 4.0) + ruby-progressbar (~> 1.7) + unicode-display_width (~> 1.0, >= 1.0.1) + rubocop-rspec (1.22.2) + rubocop (>= 0.52.1) + ruby-box (1.15.0) + addressable + json + multipart-post + oauth2 + ruby-progressbar (1.13.0) + ruby-saml (1.16.0) + nokogiri (>= 1.13.10) + rexml + ruby2_keywords (0.0.5) + ruby_dep (1.5.0) + rubyzip (2.3.2) + samvera-nesting_indexer (2.0.0) + dry-equalizer + sass (3.7.4) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sass-rails (5.1.0) + railties (>= 5.2.0) + sass (~> 3.1) + sprockets (>= 2.8, < 4.0) + sprockets-rails (>= 2.0, < 4.0) + tilt (>= 1.1, < 3) + sassc (2.4.0) + ffi (~> 1.9) + scanf (1.0.0) + scss_lint (0.60.0) + sass (~> 3.5, >= 3.5.5) + secure_headers (6.5.0) + select2-rails (3.5.11) + selenium-webdriver (4.8.1) + rexml (~> 3.2, >= 3.2.5) + rubyzip (>= 1.2.2, < 3.0) + websocket (~> 1.0) + shacl (0.1.1) + json-ld (~> 3.1, >= 3.1.7) + rdf (~> 3.1, >= 3.1.8) + sparql (~> 3.1) + sxp (~> 1.1) + shex (0.6.4) + ebnf (~> 2.1, >= 2.2) + htmlentities (~> 4.3) + json-ld (~> 3.1) + json-ld-preloaded (~> 3.1) + rdf (~> 3.1) + rdf-xsd (~> 3.1) + sparql (~> 3.1) + sxp (~> 1.1) + shoulda-matchers (4.5.1) + activesupport (>= 4.2.0) + sidekiq (6.5.12) + connection_pool (>= 2.2.5, < 3) + rack (~> 2.0) + redis (>= 4.5.0, < 5) + signet (0.19.0) + addressable (~> 2.8) + faraday (>= 0.17.5, < 3.a) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simple_form (5.3.0) + actionpack (>= 5.2) + activemodel (>= 5.2) + simplecov (0.22.0) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + slop (4.10.1) + smart_properties (1.17.0) + snaky_hash (2.0.1) + hashie + version_gem (~> 1.1, >= 1.1.1) + solr_wrapper (2.2.0) + faraday + retriable + ruby-progressbar + rubyzip + sparql (3.1.8) + builder (~> 3.2) + ebnf (~> 2.1) + logger (~> 1.4) + rdf (~> 3.1, >= 3.1.14) + rdf-aggregate-repo (~> 3.1) + rdf-xsd (~> 3.1) + sparql-client (~> 3.1, >= 3.1.2) + sxp (~> 1.1) + sparql-client (3.1.2) + net-http-persistent (~> 4.0, >= 4.0.1) + rdf (~> 3.1) + spring (1.7.2) + spring-watcher-listen (2.0.1) + listen (>= 2.7, < 4.0) + spring (>= 1.2, < 3.0) sprockets (3.7.2) concurrent-ruby (~> 1.0) rack (> 1, < 3) + sprockets-es6 (0.9.2) + babel-source (>= 5.8.11) + babel-transpiler + sprockets (>= 3.0.0) sprockets-rails (3.4.2) actionpack (>= 5.2) activesupport (>= 5.2) sprockets (>= 3.0.0) - thor (1.2.1) + ssrf_filter (1.0.8) + swd (1.3.0) + activesupport (>= 3) + attr_required (>= 0.0.5) + httpclient (>= 2.4) + sxp (1.1.0) + rdf (~> 3.1) + temple (0.10.3) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + terser (1.2.0) + execjs (>= 0.3.0, < 3) + tether-rails (1.4.0) + rails (>= 3.1) + thor (1.3.0) + thread (0.2.2) thread_safe (0.3.6) - timeout (0.3.2) + tilt (2.3.0) + timeout (0.4.1) + tinymce-rails (5.10.9) + railties (>= 3.1.1) + turbolinks (5.2.1) + turbolinks-source (~> 5.2) + turbolinks-source (5.2.0) + twitter-typeahead-rails (0.11.1.pre.corejavascript) + actionpack (>= 3.1) + jquery-rails + railties (>= 3.1) + typhoeus (1.4.1) + ethon (>= 0.9.0) tzinfo (1.2.11) thread_safe (~> 0.1) - websocket-driver (0.7.5) + uber (0.1.0) + unicode-display_width (1.8.0) + unicode-types (1.9.0) + unicode_utils (1.4.0) + validatable (1.6.7) + validate_email (0.1.6) + activemodel (>= 3.0) + mail (>= 2.2.5) + validate_url (1.0.15) + activemodel (>= 3.0.0) + public_suffix + valkyrie (2.2.0) + activemodel + activesupport + disposable (~> 0.4.5) + draper + dry-struct + dry-types (~> 1.0) + faraday (< 1.0) + json + json-ld + railties + rdf (~> 3.0, >= 3.0.10) + rdf-vocab + reform (~> 2.2) + reform-rails + version_gem (1.1.3) + warden (1.2.9) + rack (>= 2.0.9) + web-console (3.7.0) + actionview (>= 5.0) + activemodel (>= 5.0) + bindex (>= 0.4.0) + railties (>= 5.0) + webdrivers (4.7.0) + nokogiri (~> 1.6) + rubyzip (>= 1.3.0) + selenium-webdriver (> 3.141, < 5.0) + webfinger (1.2.0) + activesupport + httpclient (>= 2.4) + webmock (3.21.2) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + websocket (1.2.10) + websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) + xpath (3.2.0) + nokogiri (~> 1.8) + zeitwerk (2.6.13) PLATFORMS ruby DEPENDENCIES - hyku-knapsack! + active-fedora (>= 11.1.4) + active_elastic_job! + activerecord-nulldb-adapter + addressable (= 2.8.1) + apartment + aws-sdk-sqs + blacklight (~> 6.7) + blacklight_oai_provider (~> 6.1, >= 6.1.1) + bolognese (>= 1.9.10) + bootstrap-datepicker-rails + bulkrax (~> 5.3) + byebug + capybara + capybara-screenshot (~> 1.0) + carrierwave-aws (~> 1.3) + cocoon + codemirror-rails + coffee-rails (~> 4.2) + database_cleaner + devise + devise-guests (~> 0.3) + devise-i18n + devise_invitable (~> 1.6) + dry-monads (~> 1.4.0) + easy_translate + factory_bot_rails + fcrepo_wrapper (~> 0.4) + flipflop (~> 2.6.0) + flutie + hyku_knapsack! + hyrax (~> 3.5.0) + hyrax-doi! + hyrax-iiif_av! + i18n-debug + i18n-tasks + iiif_print! + jbuilder (~> 2.5) + jquery-rails + json-canonicalization (= 0.3.1) + launchy + listen (>= 3.0.5, < 3.2) + lograge + mods (~> 2.4) + negative_captcha + okcomputer + omniauth-cas! + omniauth-multi-provider + omniauth-rails_csrf_protection (~> 1.0) + omniauth-saml (~> 2.1) + omniauth_openid_connect + parser (~> 2.5.3) + pg + postrank-uri (>= 1.0.24) + pry-byebug + puma (~> 5.6) + rack-test (= 0.7.0) + rails (~> 5.2.5) + rails-controller-testing + rdf (~> 3.1.15) + redlock (>= 0.1.2, < 2.0) + riiif (~> 1.1) + rolify + rsolr (~> 2.0) + rspec + rspec-activemodel-mocks + rspec-its + rspec-rails (>= 3.6.0) + rspec-retry + rspec_junit_formatter + rubocop (~> 0.50, <= 0.52.1) + rubocop-rspec (~> 1.22, <= 1.22.2) + sass-rails (~> 5.0) + scss_lint + secure_headers + selenium-webdriver (= 4.8.1) + shoulda-matchers (~> 4.0) + sidekiq (< 7.0) + simplecov + solr_wrapper (~> 2.0) + spring (~> 1.7) + spring-watcher-listen (~> 2.0.0) + terser + tether-rails + turbolinks (~> 5) + web-console (>= 3.3.0) + webdrivers (~> 4.7.0) + webmock BUNDLED WITH 2.1.4 From 39e92302d28411e97e116823a30673ee44c454e5 Mon Sep 17 00:00:00 2001 From: Shana Moore Date: Wed, 21 Feb 2024 08:16:27 -0800 Subject: [PATCH 14/15] Update hyrax-webapp --- hyrax-webapp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyrax-webapp b/hyrax-webapp index faa2d83..4717a5b 160000 --- a/hyrax-webapp +++ b/hyrax-webapp @@ -1 +1 @@ -Subproject commit faa2d83d7f7a8cea04445d05b49ee77f22307b76 +Subproject commit 4717a5b576cdbc87ab000345465a8da4cf4774a8 From 8a23c7daf23222991b90cf4fc21f4d71b7f4b7c3 Mon Sep 17 00:00:00 2001 From: Rob Kaufman Date: Wed, 21 Feb 2024 13:17:14 -0800 Subject: [PATCH 15/15] Update docker-compose.yml fix image urls --- docker-compose.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 1dccd2e..62ce805 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,7 @@ x-app: &app args: BUILDKIT_INLINE_CACHE: 1 APP_PATH: ./hyrax-webapp - image: ghcr.io/samvera-labs/hyku_knapsack:${TAG:-latest} + image: ghcr.io/scientist-softserv/palni_palci_knapsack:${TAG:-latest} environment: # This line is what makes the knapsack include use the local code instead of the remote gem - BUNDLE_LOCAL__HYKU_KNAPSACK=/app/samvera @@ -62,7 +62,7 @@ services: extends: file: hyrax-webapp/docker-compose.yml service: base - image: ghcr.io/samvera/hyku/base:${TAG:-latest} + image: ghcr.io/scientist-softserv/palni_palci_knapsack/base:${TAG:-latest} command: bash -l -c "echo 'base is only used for building base images, which in turn reduces image build times. It does not need to be run'" web: @@ -93,7 +93,7 @@ services: args: BUILDKIT_INLINE_CACHE: 1 APP_PATH: ./hyrax-webapp - image: ghcr.io/samvera-labs/hyku_knapsack/worker:${TAG:-latest} + image: ghcr.io/scientist-softserv/palni_palci_knapsack/worker:${TAG:-latest} # Uncomment command to access container with out starting bin/worker. Useful for debugging or updating Gemfile.lock # command: sleep infinity volumes: