hyrax 4.0.0.rc1 → 4.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +61 -0
  3. data/.dassie/Gemfile +1 -1
  4. data/.github/CONTRIBUTING.md +39 -27
  5. data/.regen +1 -1
  6. data/CONTAINERS.md +4 -4
  7. data/Dockerfile +1 -1
  8. data/app/actors/hyrax/actors/create_with_files_actor.rb +1 -1
  9. data/app/controllers/concerns/hyrax/controller.rb +2 -1
  10. data/app/controllers/hyrax/admin/strategies_controller.rb +2 -2
  11. data/app/forms/hyrax/forms/administrative_set_form.rb +1 -1
  12. data/app/forms/hyrax/forms/pcdm_collection_form.rb +2 -2
  13. data/app/forms/hyrax/forms/pcdm_object_form.rb +1 -1
  14. data/app/forms/hyrax/forms/permission.rb +2 -2
  15. data/app/forms/hyrax/forms/resource_form.rb +10 -10
  16. data/app/forms/hyrax/forms/work_embargo_form.rb +3 -3
  17. data/app/forms/hyrax/forms/work_lease_form.rb +3 -3
  18. data/app/helpers/hyrax/content_block_helper_behavior.rb +1 -1
  19. data/app/helpers/hyrax/iiif_helper.rb +1 -1
  20. data/app/models/collection_branding_info.rb +7 -13
  21. data/app/models/hyrax/permission_template.rb +1 -1
  22. data/app/presenters/hyrax/iiif_manifest_presenter.rb +1 -1
  23. data/app/presenters/hyrax/presenter_factory.rb +2 -2
  24. data/app/services/hyrax/solr_service.rb +2 -2
  25. data/app/services/hyrax/visibility_reader.rb +1 -1
  26. data/app/services/hyrax/visibility_writer.rb +1 -1
  27. data/app/services/hyrax/workflow/permission_query.rb +5 -5
  28. data/app/validators/hyrax/collection_membership_validator.rb +2 -2
  29. data/config/initializers/kaminari_engine_patch.rb +16 -0
  30. data/documentation/legacyREADME.md +3 -3
  31. data/hyrax.gemspec +3 -6
  32. data/lib/hyrax/configuration.rb +11 -0
  33. data/lib/hyrax/controlled_vocabularies/resource_label_caching.rb +1 -1
  34. data/lib/hyrax/engine.rb +2 -0
  35. data/lib/hyrax/transactions/transaction.rb +3 -2
  36. data/lib/hyrax/version.rb +1 -1
  37. data/lib/hyrax.rb +0 -1
  38. data/lib/wings/valkyrie/storage.rb +4 -1
  39. data/template.rb +1 -1
  40. metadata +10 -43
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a40b509766f1add062da64ebfa925e2f005b37f3b8ba98cf47869b126e5c5edb
4
- data.tar.gz: f8d8d154e6c12ba940ea317042ded3bddbbc8c5b3b4ba70df2edcb35715c3aca
3
+ metadata.gz: 24e7e9d00de4eebd2f2dfaf96bcd1a09ac9589b17e94ddcc0bf5681d3c93b0c4
4
+ data.tar.gz: 92753b2fbb1271cfec93e2eddd07d11da1091eaf8b36494e754ac3400a83a6a1
5
5
  SHA512:
6
- metadata.gz: b07a5c4beb95e72e33ebcdb6cd7c68837077760de21f73ff8a216c9a51eef7b32ca8c2331a3cfc54e17aae8964fa2c5cbd5981de052c822502141bc7ad3ee513
7
- data.tar.gz: cae0fc1b05c720927879e2c076e3ce9eac3fa623e44012f227ef43814028b95cfd7605c14f87e459d26259f9d3996c15848c25130ad128ca82c3a13a9298f237
6
+ metadata.gz: 16a328b5b11d826f8149f0b260675ffe913d7e41a4b5c37035696cb32741b650a9f4bf9fa0d70ed08a1be712ddc8b452824bfb5be60a99b1a9d52ead57d8b7f3
7
+ data.tar.gz: bff8a0b37d073e1014f9566472030bb2b22e16a19fc1413dec6405cf21d6c3f178b0644ecbb48ee8ed0d259fe4f1b0422e747a5f3192c63753dc76d89ba8cb33
data/.circleci/config.yml CHANGED
@@ -187,6 +187,67 @@ jobs:
187
187
 
188
188
  workflows:
189
189
  version: 2
190
+ ruby3-2:
191
+ jobs:
192
+ - bundle:
193
+ ruby_version: "3.2.2"
194
+ rails_version: "6.1.7.2"
195
+ bundler_version: "2.4.8"
196
+ - build:
197
+ ruby_version: "3.2.2"
198
+ rails_version: "6.1.7.2"
199
+ bundler_version: "2.4.8"
200
+ requires:
201
+ - bundle
202
+ - test:
203
+ name: "ruby3-2"
204
+ ruby_version: "3.2.2"
205
+ bundler_version: "2.4.8"
206
+ requires:
207
+ - build
208
+ - test:
209
+ name: "ruby3-2-valkyrie"
210
+ ruby_version: "3.2.2"
211
+ bundler_version: "2.4.8"
212
+ hyrax_valkyrie: "true"
213
+ requires:
214
+ - build
215
+ ruby3-1:
216
+ jobs:
217
+ - bundle:
218
+ ruby_version: "3.1.4"
219
+ rails_version: "6.1.7.2"
220
+ bundler_version: "2.4.8"
221
+ - build:
222
+ ruby_version: "3.1.4"
223
+ rails_version: "6.1.7.2"
224
+ bundler_version: "2.4.8"
225
+ requires:
226
+ - bundle
227
+ - test:
228
+ name: "ruby3-1"
229
+ ruby_version: "3.1.4"
230
+ bundler_version: "2.4.8"
231
+ requires:
232
+ - build
233
+ ruby3-0:
234
+ jobs:
235
+ - bundle:
236
+ ruby_version: "3.0.6"
237
+ rails_version: "6.1.7.2"
238
+ bundler_version: "2.4.8"
239
+ - build:
240
+ ruby_version: "3.0.6"
241
+ rails_version: "6.1.7.2"
242
+ bundler_version: "2.4.8"
243
+ requires:
244
+ - bundle
245
+ - test:
246
+ name: "ruby3-0"
247
+ ruby_version: "3.0.6"
248
+ bundler_version: "2.4.8"
249
+ requires:
250
+ - build
190
251
  ruby2-7:
191
252
  jobs:
192
253
  - bundle:
data/.dassie/Gemfile CHANGED
@@ -8,7 +8,7 @@ else
8
8
  end
9
9
  git_source(:github) { |repo| "https://github.com/#{repo}.git" }
10
10
 
11
- ruby '2.7.7'
11
+ ruby '3.2.1'
12
12
 
13
13
  # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
14
14
  gem 'rails', '~> 6.0'
@@ -1,6 +1,6 @@
1
1
  # How to Contribute
2
2
 
3
- We want your help to make Samvera great. There are a few guidelines
3
+ We want your help to make the Samvera community great. There are a few guidelines
4
4
  that we need contributors to follow so that we can have a chance of
5
5
  keeping on top of things.
6
6
 
@@ -11,16 +11,27 @@ experience for all its members, whether they are at a formal gathering, in
11
11
  a social setting, or taking part in activities online. Please see our
12
12
  [Code of Conduct](CODE_OF_CONDUCT.md) for more information.
13
13
 
14
- ## Samvera Community Intellectual Property Licensing and Ownership
14
+ ## Language
15
15
 
16
- All code contributors must have an Individual Contributor License Agreement
17
- (iCLA) on file with the Samvera Steering Group. If the contributor works for
18
- an institution, the institution must have a Corporate Contributor License
19
- Agreement (cCLA) on file.
16
+ The language we use matters. Today, tomorrow, and for years to come
17
+ people will read the code we write. They will judge us for our
18
+ design, logic, and the words we use to describe the system.
20
19
 
21
- https://wiki.lyrasis.org/display/samvera/Samvera+Community+Intellectual+Property+Licensing+and+Ownership
20
+ Our words should be accessible. Favor descriptive words that give
21
+ meaning while avoiding reinforcing systemic inequities. For example,
22
+ in the Samvera community, we should favor using allowed\_list instead
23
+ of whitelist, denied\_list instead of blacklist, or source/copy
24
+ instead of master/slave.
22
25
 
23
- You should also add yourself to the `CONTRIBUTORS.md` file in the root of the project.
26
+ We're going to get it wrong, but this is a call to keep working to
27
+ make it right. View our code and the words we choose as a chance to
28
+ have a conversation. A chance to grow an understanding of the systems
29
+ we develop as well as the systems in which we live.
30
+
31
+ See [“Blacklists” and “whitelists”: a salutary warning concerning the
32
+ prevalence of racist language in discussions of predatory
33
+ publishing](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6148600/) for
34
+ further details.
24
35
 
25
36
  ## Contribution Tasks
26
37
 
@@ -34,7 +45,7 @@ You should also add yourself to the `CONTRIBUTORS.md` file in the root of the pr
34
45
  ### Reporting Issues
35
46
 
36
47
  * Make sure you have a [GitHub account](https://github.com/signup/free)
37
- * Submit a [Github issue](./issues) by:
48
+ * Submit a [Github issue](https://github.com/samvera/hyrax/issues/) by:
38
49
  * Clearly describing the issue
39
50
  * Provide a descriptive summary
40
51
  * Explain the expected behavior
@@ -45,15 +56,22 @@ You should also add yourself to the `CONTRIBUTORS.md` file in the root of the pr
45
56
 
46
57
  * Fork the repository on GitHub
47
58
  * Create a topic branch from where you want to base your work.
48
- * This is usually the master branch.
49
- * To quickly create a topic branch based on master; `git branch fix/master/my_contribution master`
50
- * Then checkout the new branch with `git checkout fix/master/my_contribution`.
51
- * Please avoid working directly on the `master` branch.
59
+ * This is usually the `main` branch.
60
+ * To quickly create a topic branch based on `main`; `git branch fix/main/my_contribution main`
61
+ * Then checkout the new branch with `git checkout fix/main/my_contribution`.
62
+ * Please avoid working directly on the `main` branch.
63
+ * Please do not create a branch called `master`. (See note below.)
52
64
  * You may find the [hub suite of commands](https://github.com/defunkt/hub) helpful
53
65
  * Make sure you have added sufficient tests and documentation for your changes.
54
66
  * Test functionality with RSpec; Test features / UI with Capybara.
55
67
  * Run _all_ the tests to assure nothing else was accidentally broken.
56
68
 
69
+ NOTE: This repository follows the [Samvera Community Code of Conduct](https://samvera.atlassian.net/wiki/spaces/samvera/pages/405212316/Code+of+Conduct)
70
+ and [language recommendations](#language).
71
+ Please ***do not*** create a branch called `master` for this repository or as part of
72
+ your pull request; the branch will either need to be removed or renamed before it can
73
+ be considered for inclusion in the code base and history of this repository.
74
+
57
75
  ### Documenting Code
58
76
 
59
77
  * All new public methods, modules, and classes should include inline documentation in [YARD](http://yardoc.org/).
@@ -63,15 +81,11 @@ You should also add yourself to the `CONTRIBUTORS.md` file in the root of the pr
63
81
  * If you don't know exactly what a bit of code does, it is extra likely that it needs to be documented. Take a stab at it and ask for feedback in your pull request. You can use the 'blame' button on GitHub to identify the original developer of the code and @mention them in your comment.
64
82
  * This work greatly increases the usability of the code base and supports the on-ramping of new committers.
65
83
  * We will all be understanding of one another's time constraints in this area.
66
- * YARD examples:
67
- * [Hyrax::AdminSet](https://github.com/samvera/hyrax/blob/master/app/models/admin_set.rb)
68
- * [ActiveTriples::LocalName::Minter](https://github.com/ActiveTriples/active_triples-local_name/blob/master/lib/active_triples/local_name/minter.rb)
69
84
  * [Getting started with YARD](http://www.rubydoc.info/gems/yard/file/docs/GettingStarted.md)
70
85
 
71
86
  ### Committing changes
72
87
 
73
88
  * Make commits of logical units.
74
- * Your commit should include a high level description of your work in HISTORY.textile
75
89
  * Check for unnecessary whitespace with `git diff --check` before committing.
76
90
  * Make sure your commit messages are [well formed](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
77
91
  * If you created an issue, you can close it by including "Closes #issue" in your commit message. See [Github's blog post for more details](https://github.com/blog/1386-closing-issues-via-commit-messages)
@@ -112,18 +126,16 @@ You should also add yourself to the `CONTRIBUTORS.md` file in the root of the pr
112
126
 
113
127
  ### Submitting Changes
114
128
 
115
- [Detailed Walkthrough of One Pull Request per Commit](http://ndlib.github.io/practices/one-commit-per-pull-request/)
116
-
117
129
  * Read the article ["Using Pull Requests"](https://help.github.com/articles/using-pull-requests) on GitHub.
118
- * Make sure your branch is up to date with its parent branch (i.e. master)
119
- * `git checkout master`
130
+ * Make sure your branch is up to date with its parent branch (i.e. main)
131
+ * `git checkout main`
120
132
  * `git pull --rebase`
121
133
  * `git checkout <your-branch>`
122
- * `git rebase master`
134
+ * `git rebase main`
123
135
  * It is a good idea to run your tests again.
124
136
  * If you've made more than one commit take a moment to consider whether squashing commits together would help improve their logical grouping.
125
137
  * [Detailed Walkthrough of One Pull Request per Commit](http://ndlib.github.io/practices/one-commit-per-pull-request/)
126
- * `git rebase --interactive master` ([See Github help](https://help.github.com/articles/interactive-rebase))
138
+ * `git rebase --interactive main` ([See Github help](https://help.github.com/articles/interactive-rebase))
127
139
  * Squashing your branch's changes into one commit is "good form" and helps the person merging your request to see everything that is going on.
128
140
  * Push your changes to a topic branch in your fork of the repository.
129
141
  * Submit a pull request from your fork to the project.
@@ -133,14 +145,14 @@ You should also add yourself to the `CONTRIBUTORS.md` file in the root of the pr
133
145
  We adopted [Github's Pull Request Review](https://help.github.com/articles/about-pull-request-reviews/) for our repositories.
134
146
  Common checks that may occur in our repositories:
135
147
 
136
- 1. Travis CI - where our automated tests are running
137
- 2. Hound CI - where we check for style violations
148
+ 1. [CircleCI](https://circleci.com/gh/samvera) - where our automated tests are running
149
+ 2. RuboCop/Bixby - where we check for style violations
138
150
  3. Approval Required - Github enforces at least one person approve a pull request. Also, all reviewers that have chimed in must approve.
139
151
  4. CodeClimate - is our code remaining healthy (at least according to static code analysis)
140
152
 
141
153
  If one or more of the required checks failed (or are incomplete), the code should not be merged (and the UI will not allow it). If all of the checks have passed, then anyone on the project (including the pull request submitter) may merge the code.
142
154
 
143
- *Example: Carolyn submits a pull request, Justin reviews the pull request and approves. However, Justin is still waiting on other checks (Travis CI is usually the culprit), so he does not merge the pull request. Eventually, all of the checks pass. At this point, Carolyn or anyone else may merge the pull request.*
155
+ *Example: Carolyn submits a pull request, Justin reviews the pull request and approves. However, Justin is still waiting on other checks (CI tests are usually the culprit), so he does not merge the pull request. Eventually, all of the checks pass. At this point, Carolyn or anyone else may merge the pull request.*
144
156
 
145
157
  #### Things to Consider When Reviewing
146
158
 
@@ -157,7 +169,7 @@ This is your chance for a mentoring moment of another developer. Take time to gi
157
169
  * Do new or changed methods, modules, and classes have documentation?
158
170
  * Does the commit contain more than it should? Are two separate concerns being addressed in one commit?
159
171
  * Does the description of the new/changed specs match your understanding of what the spec is doing?
160
- * Did the Travis tests complete successfully?
172
+ * Did the Continuous Integration tests complete successfully?
161
173
 
162
174
  If you are uncertain, bring other contributors into the conversation by assigning them as a reviewer.
163
175
 
data/.regen CHANGED
@@ -1,2 +1,2 @@
1
1
  # When updating CI regen seed, set to current date.
2
- 2022-07-01T00
2
+ 2023-04-11T16:25:55
data/CONTAINERS.md CHANGED
@@ -5,13 +5,13 @@ Our goal is to provide a practical, reusable reference environment for applicati
5
5
 
6
6
  The [Hyrax Engine Development](#hyrax-engine-development) is further along than the [Docker Image for Hyrax-based Applications](#docker-image-for-hyrax-based-applications) which is further along than [Deploying to Production](#deploying-to-production).
7
7
 
8
- There are two options for development environments to run:
8
+ There are two options for development environments to run:
9
9
 
10
10
  - [Dassie](#dassie-internal-test-app-with-activefedora) is the default internal test app that will run an ActiveFedora-based Hyrax web application using Fedora 4 as the backend storage. See [Troubleshooting Dassie](#troubleshooting-dassie) if you encounter any issues.
11
11
  - [Koppie](#koppie-internal-test-app-with-valkyrie-connector-to-postgres) is a newer internal test app that is a Valkyrie-based Hyrax web application that runs with PostGres as backend storage. It does not run ActiveFedora or use Fedora 4. See [Troubleshooting Koppie](#troubleshooting-koppie) if you encounter any issues.
12
12
 
13
13
  <!-- NOTE: This title is referenced in the top-level README.md. Keep that in mind if you change it. -->
14
- ## Hyrax Engine Development
14
+ ## Hyrax Engine Development
15
15
 
16
16
  We support a `docker-compose`-based development environment for folks working on
17
17
  the Hyrax engine. This environment is substantially more like a Hyrax production
@@ -191,7 +191,7 @@ We publish several Hyrax images to the [GitHub container registry][ghcr] under
191
191
  the [Samvera organization][samvera-packages]. To build them:
192
192
 
193
193
  ```sh
194
- export HYRAX_VERSION=v4.0.0.rc1 # or desired version
194
+ export HYRAX_VERSION=v4.0.0.rc2 # or desired version
195
195
  git checkout hyrax-$HYRAX_VERSION
196
196
 
197
197
  docker build --target hyrax-base --tag ghcr.io/samvera/hyrax/hyrax-base:$(git rev-parse HEAD) .
@@ -229,4 +229,4 @@ helm install -n hyrax --set image.tag=(git rev-parse HEAD) dassie chart/hyrax
229
229
  ```
230
230
 
231
231
  [ghcr]: https://docs.github.com/en/enterprise-cloud@latest/packages/working-with-a-github-packages-registry/working-with-the-container-registry
232
- [samvera-packages]: https://github.com/orgs/samvera/packages
232
+ [samvera-packages]: https://github.com/orgs/samvera/packages
data/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- ARG RUBY_VERSION=2.7.7
1
+ ARG RUBY_VERSION=3.2.1
2
2
 
3
3
  # Replace with official jemalloc package in alpine 3.17
4
4
  FROM ruby:$RUBY_VERSION-alpine3.16 as builder
@@ -50,7 +50,7 @@ module Hyrax
50
50
  # @return [TrueClass]
51
51
  def attach_files(files, curation_concern, attributes)
52
52
  return true if files.blank?
53
- AttachFilesToWorkJob.perform_later(curation_concern, files, attributes.to_h.symbolize_keys)
53
+ AttachFilesToWorkJob.perform_later(curation_concern, files, **attributes.to_h.symbolize_keys)
54
54
  true
55
55
  end
56
56
 
@@ -41,7 +41,8 @@ module Hyrax::Controller
41
41
 
42
42
  ##
43
43
  # @note for Blacklight 6/7 compatibility
44
- def search_service(**search_params)
44
+ def search_service(*args, **search_params)
45
+ search_params.merge!(args.last) if args.last.is_a?(Hash)
45
46
  return super if defined?(super) && search_params.empty?
46
47
 
47
48
  search_service_class.new(config: blacklight_config,
@@ -7,8 +7,8 @@ module Hyrax
7
7
  end
8
8
 
9
9
  # TODO: we could remove this if we used an isolated engine
10
- def features_url
11
- hyrax.admin_features_path
10
+ def features_url(*args)
11
+ hyrax.admin_features_path(*args)
12
12
  end
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Hyrax
8
8
  class AdministrativeSetForm < Valkyrie::ChangeSet
9
9
  ##
10
10
  # @api private
11
- AdminSetMembersPopulator = lambda do |_options|
11
+ AdminSetMembersPopulator = lambda do |**_options|
12
12
  self.member_ids =
13
13
  if model.new_record
14
14
  []
@@ -8,7 +8,7 @@ module Hyrax
8
8
  class PcdmCollectionForm < Valkyrie::ChangeSet # rubocop:disable Metrics/ClassLength
9
9
  include Hyrax::FormFields(:core_metadata)
10
10
 
11
- BannerInfoPrepopulator = lambda do |_options|
11
+ BannerInfoPrepopulator = lambda do |**_options|
12
12
  self.banner_info ||= begin
13
13
  banner_info = CollectionBrandingInfo.where(collection_id: id.to_s, role: "banner")
14
14
  banner_file = File.split(banner_info.first.local_path).last unless banner_info.empty?
@@ -19,7 +19,7 @@ module Hyrax
19
19
  end
20
20
  end
21
21
 
22
- LogoInfoPrepopulator = lambda do |_options|
22
+ LogoInfoPrepopulator = lambda do |**_options|
23
23
  self.logo_info ||= begin
24
24
  logos_info = CollectionBrandingInfo.where(collection_id: id.to_s, role: "logo")
25
25
 
@@ -12,7 +12,7 @@ module Hyrax
12
12
  property :proxy_depositor
13
13
 
14
14
  # pcdm relationships
15
- property :admin_set_id, prepopulator: ->(_opts) { self.admin_set_id = Hyrax::AdminSetCreateService.find_or_create_default_admin_set.id.to_s }
15
+ property :admin_set_id, prepopulator: proc { |_opts| self.admin_set_id = Hyrax::AdminSetCreateService.find_or_create_default_admin_set.id.to_s }
16
16
  property :member_ids, default: [], type: Valkyrie::Types::Array
17
17
  property :member_of_collection_ids, default: [], type: Valkyrie::Types::Array
18
18
  property :member_of_collections_attributes, virtual: true, populator: :in_collections_populator
@@ -9,8 +9,8 @@ module Hyrax
9
9
  # names. we provide these as virtual fields and prepopulate these from
10
10
  # `Hyrax::Permission`.
11
11
  class Permission < Hyrax::ChangeSet
12
- property :agent_name, virtual: true, prepopulator: ->(_opts) { self.agent_name = model.agent }
13
- property :access, virtual: true, prepopulator: ->(_opts) { self.access = model.mode }
12
+ property :agent_name, virtual: true, prepopulator: proc { |_opts| self.agent_name = model.agent }
13
+ property :access, virtual: true, prepopulator: proc { |_opts| self.access = model.mode }
14
14
 
15
15
  ##
16
16
  # @note support a {#to_hash} method for compatibility with
@@ -37,7 +37,7 @@ module Hyrax
37
37
  class ResourceForm < Hyrax::ChangeSet # rubocop:disable Metrics/ClassLength
38
38
  ##
39
39
  # @api private
40
- InWorksPrepopulator = lambda do |_options|
40
+ InWorksPrepopulator = proc do |_options|
41
41
  self.in_works_ids =
42
42
  if persisted?
43
43
  Hyrax.query_service
@@ -56,7 +56,7 @@ module Hyrax
56
56
  # with `etag`-driven, application-side lock checks. for non-wings adapters
57
57
  # we want to move away from application side lock validation and rely
58
58
  # on the adapter/database features instead.
59
- LockKeyPrepopulator = lambda do |_options|
59
+ LockKeyPrepopulator = proc do |_options|
60
60
  if Hyrax.config.disable_wings || !Hyrax.metadata_adapter.is_a?(Wings::Valkyrie::MetadataAdapter)
61
61
  Hyrax.logger.info "trying to prepopulate a lock token for " \
62
62
  "#{self.class.inspect}, but optimistic locking isn't " \
@@ -78,26 +78,26 @@ module Hyrax
78
78
 
79
79
  property :date_modified, readable: false
80
80
  property :date_uploaded, readable: false
81
- property :agreement_accepted, virtual: true, default: false, prepopulator: ->(_opts) { self.agreement_accepted = !model.new_record }
81
+ property :agreement_accepted, virtual: true, default: false, prepopulator: proc { |_opts| self.agreement_accepted = !model.new_record }
82
82
 
83
83
  collection(:permissions,
84
84
  virtual: true,
85
85
  default: [],
86
86
  form: Hyrax::Forms::Permission,
87
87
  populator: :permission_populator,
88
- prepopulator: ->(_opts) { self.permissions = Hyrax::AccessControl.for(resource: model).permissions })
88
+ prepopulator: proc { |_opts| self.permissions = Hyrax::AccessControl.for(resource: model).permissions })
89
89
 
90
90
  property :embargo, form: Hyrax::Forms::Embargo, populator: :embargo_populator
91
91
  property :lease, form: Hyrax::Forms::Lease, populator: :lease_populator
92
92
 
93
93
  # virtual properties for embargo/lease;
94
- property :embargo_release_date, virtual: true, prepopulator: ->(_opts) { self.embargo_release_date = model.embargo&.embargo_release_date }
95
- property :visibility_after_embargo, virtual: true, prepopulator: ->(_opts) { self.visibility_after_embargo = model.embargo&.visibility_after_embargo }
96
- property :visibility_during_embargo, virtual: true, prepopulator: ->(_opts) { self.visibility_during_embargo = model.embargo&.visibility_during_embargo }
94
+ property :embargo_release_date, virtual: true, prepopulator: proc { |_opts| self.embargo_release_date = model.embargo&.embargo_release_date }
95
+ property :visibility_after_embargo, virtual: true, prepopulator: proc { |_opts| self.visibility_after_embargo = model.embargo&.visibility_after_embargo }
96
+ property :visibility_during_embargo, virtual: true, prepopulator: proc { |_opts| self.visibility_during_embargo = model.embargo&.visibility_during_embargo }
97
97
 
98
- property :lease_expiration_date, virtual: true, prepopulator: ->(_opts) { self.lease_expiration_date = model.lease&.lease_expiration_date }
99
- property :visibility_after_lease, virtual: true, prepopulator: ->(_opts) { self.visibility_after_lease = model.lease&.visibility_after_lease }
100
- property :visibility_during_lease, virtual: true, prepopulator: ->(_opts) { self.visibility_during_lease = model.lease&.visibility_during_lease }
98
+ property :lease_expiration_date, virtual: true, prepopulator: proc { |_opts| self.lease_expiration_date = model.lease&.lease_expiration_date }
99
+ property :visibility_after_lease, virtual: true, prepopulator: proc { |_opts| self.visibility_after_lease = model.lease&.visibility_after_lease }
100
+ property :visibility_during_lease, virtual: true, prepopulator: proc { |_opts| self.visibility_during_lease = model.lease&.visibility_during_lease }
101
101
 
102
102
  property :in_works_ids, virtual: true, prepopulator: InWorksPrepopulator
103
103
 
@@ -11,9 +11,9 @@ module Hyrax
11
11
  # +EmbargoesControllerBehavior+.
12
12
  class WorkEmbargoForm < Hyrax::ChangeSet
13
13
  property :embargo, form: Hyrax::Forms::Embargo, populator: :embargo_populator, prepopulator: :embargo_populator
14
- property :embargo_release_date, virtual: true, prepopulator: ->(_opts) { self.embargo_release_date = model.embargo&.embargo_release_date }
15
- property :visibility_after_embargo, virtual: true, prepopulator: ->(_opts) { self.visibility_after_embargo = model.embargo&.visibility_after_embargo }
16
- property :visibility_during_embargo, virtual: true, prepopulator: ->(_opts) { self.visibility_during_embargo = model.embargo&.visibility_during_embargo }
14
+ property :embargo_release_date, virtual: true, prepopulator: proc { |_opts| self.embargo_release_date = model.embargo&.embargo_release_date }
15
+ property :visibility_after_embargo, virtual: true, prepopulator: proc { |_opts| self.visibility_after_embargo = model.embargo&.visibility_after_embargo }
16
+ property :visibility_during_embargo, virtual: true, prepopulator: proc { |_opts| self.visibility_during_embargo = model.embargo&.visibility_during_embargo }
17
17
 
18
18
  def embargo_populator(**)
19
19
  self.embargo = Hyrax::EmbargoManager.embargo_for(resource: model)
@@ -11,9 +11,9 @@ module Hyrax
11
11
  # +LeasesControllerBehavior+.
12
12
  class WorkLeaseForm < Hyrax::ChangeSet
13
13
  property :lease, form: Hyrax::Forms::Lease, populator: :lease_populator, prepopulator: :lease_populator
14
- property :lease_expiration_date, virtual: true, prepopulator: ->(_opts) { self.lease_expiration_date = model.lease&.lease_expiration_date }
15
- property :visibility_after_lease, virtual: true, prepopulator: ->(_opts) { self.visibility_after_lease = model.lease&.visibility_after_lease }
16
- property :visibility_during_lease, virtual: true, prepopulator: ->(_opts) { self.visibility_during_lease = model.lease&.visibility_during_lease }
14
+ property :lease_expiration_date, virtual: true, prepopulator: proc { |_opts| self.lease_expiration_date = model.lease&.lease_expiration_date }
15
+ property :visibility_after_lease, virtual: true, prepopulator: proc { |_opts| self.visibility_after_lease = model.lease&.visibility_after_lease }
16
+ property :visibility_during_lease, virtual: true, prepopulator: proc { |_opts| self.visibility_during_lease = model.lease&.visibility_during_lease }
17
17
 
18
18
  def lease_populator(**)
19
19
  self.lease = Hyrax::LeaseManager.lease_for(resource: model)
@@ -3,7 +3,7 @@ module Hyrax
3
3
  module ContentBlockHelperBehavior
4
4
  def displayable_content_block(content_block, **options)
5
5
  return unless display_content_block? content_block
6
- tag.div raw(content_block.value), options
6
+ tag.div(raw(content_block.value), **options)
7
7
  end
8
8
 
9
9
  def display_content_block?(content_block)
@@ -3,7 +3,7 @@ module Hyrax
3
3
  module IiifHelper
4
4
  def iiif_viewer_display(work_presenter, locals = {})
5
5
  render iiif_viewer_display_partial(work_presenter),
6
- locals.merge(presenter: work_presenter)
6
+ **locals.merge(presenter: work_presenter)
7
7
  end
8
8
 
9
9
  def iiif_viewer_display_partial(work_presenter)
@@ -1,18 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  class CollectionBrandingInfo < ApplicationRecord
3
- def initialize(collection_id:,
4
- filename:,
5
- role:,
6
- alt_txt: "",
7
- target_url: "")
8
-
9
- super()
10
- self.collection_id = collection_id
11
- self.role = role
12
- self.alt_text = alt_txt
13
- self.target_url = target_url
14
- self.local_path = File.join(role, filename)
15
- end
3
+ attr_accessor :filename, :alt_txt
4
+ after_initialize :set_collection_attributes
16
5
 
17
6
  def save(file_location, upload_file = true)
18
7
  filename = File.split(local_path).last
@@ -52,6 +41,11 @@ class CollectionBrandingInfo < ApplicationRecord
52
41
 
53
42
  private
54
43
 
44
+ def set_collection_attributes
45
+ self.alt_text ||= alt_txt || ''
46
+ self.local_path ||= File.join(role, filename)
47
+ end
48
+
55
49
  def storage
56
50
  Hyrax.config.branding_storage_adapter
57
51
  end
@@ -204,7 +204,7 @@ module Hyrax
204
204
  interpreted_read_groups = read_groups
205
205
 
206
206
  if interpret_visibility
207
- visibilities = Hyrax::VisibilityMap.instance
207
+ visibilities = Hyrax.config.visibility_map
208
208
  interpreted_read_groups -= visibilities.deletions_for(visibility: collection.visibility)
209
209
  interpreted_read_groups += visibilities.additions_for(visibility: collection.visibility)
210
210
  end
@@ -77,7 +77,7 @@ module Hyrax
77
77
  metadata_fields.map do |field_name|
78
78
  {
79
79
  'label' => I18n.t("simple_form.labels.defaults.#{field_name}"),
80
- 'value' => Array(self[field_name]).map { |value| scrub(value.to_s) }
80
+ 'value' => Array(send(field_name)).map { |value| scrub(value.to_s) }
81
81
  }
82
82
  end
83
83
  end
@@ -44,8 +44,8 @@ module Hyrax
44
44
  end
45
45
 
46
46
  # Query solr using POST so that the query doesn't get too large for a URI
47
- def query(query, args = {})
48
- result = Hyrax::SolrService.post(query, args)
47
+ def query(query, **opts)
48
+ result = Hyrax::SolrService.post(query, **opts)
49
49
  result.fetch('response').fetch('docs')
50
50
  end
51
51
  end
@@ -128,8 +128,8 @@ module Hyrax
128
128
 
129
129
  # Wraps ActiveFedora::Base#search_by_id(id, opts)
130
130
  # @return [Array<SolrHit>] the response docs wrapped in SolrHit objects
131
- def search_by_id(id, opts = {})
132
- result = Hyrax::SolrService.query("id:#{id}", opts.merge(rows: 1))
131
+ def search_by_id(id, **opts)
132
+ result = Hyrax::SolrService.query("id:#{id}", **opts.merge(rows: 1))
133
133
 
134
134
  raise Hyrax::ObjectNotFoundError, "Object '#{id}' not found in solr" if result.empty?
135
135
  result.first
@@ -41,7 +41,7 @@ module Hyrax
41
41
  end
42
42
 
43
43
  def visibility_map
44
- Hyrax::VisibilityMap.instance
44
+ Hyrax.config.visibility_map
45
45
  end
46
46
  end
47
47
  end
@@ -44,7 +44,7 @@ module Hyrax
44
44
  end
45
45
 
46
46
  def visibility_map
47
- Hyrax::VisibilityMap.instance
47
+ Hyrax.config.visibility_map
48
48
  end
49
49
  end
50
50
  end
@@ -55,7 +55,7 @@ module Hyrax
55
55
  workflow_actions_scope.arel_table[:id].in(
56
56
  workflow_state_actions_scope.arel_table.project(
57
57
  workflow_state_actions_scope.arel_table[:workflow_action_id]
58
- ).where(workflow_state_actions_scope.arel.constraints.reduce)
58
+ ).where(workflow_state_actions_scope.arel.constraints.reduce(:+))
59
59
  )
60
60
  )
61
61
  end
@@ -307,7 +307,7 @@ module Hyrax
307
307
 
308
308
  entity_specific_scope = scope_processing_workflow_roles_for_user_and_entity_specific(user: user, entity: entity)
309
309
  Sipity::WorkflowRole.where(
310
- workflow_scope.arel.constraints.reduce.or(entity_specific_scope.arel.constraints.reduce)
310
+ workflow_scope.arel.constraints.reduce(:+).or(entity_specific_scope.arel.constraints.reduce(:+))
311
311
  )
312
312
  end
313
313
 
@@ -358,7 +358,7 @@ module Hyrax
358
358
  agent_scope.arel_table.project(
359
359
  agent_scope.arel_table[:id]
360
360
  ).where(
361
- agent_scope.arel.constraints.reduce.and(entity_responsibilities[:entity_id].eq(entity.id))
361
+ agent_scope.arel.constraints.reduce(:+).and(entity_responsibilities[:entity_id].eq(entity.id))
362
362
  )
363
363
  )
364
364
  )
@@ -399,7 +399,7 @@ module Hyrax
399
399
  ).where(
400
400
  permissions.arel_table[:workflow_role_id].in(
401
401
  role_scope.arel_table.project(role_scope.arel_table[:id]).where(
402
- role_scope.arel.constraints.reduce
402
+ role_scope.arel.constraints.reduce(:+)
403
403
  )
404
404
  )
405
405
  )
@@ -441,7 +441,7 @@ module Hyrax
441
441
  # @return [ActiveRecord::Relation<Sipity::WorkflowAction>]
442
442
  def scope_workflow_actions_available_for_current_state(entity:)
443
443
  workflow_actions_for_current_state = scope_workflow_actions_for_current_state(entity: entity)
444
- Sipity::WorkflowAction.where(workflow_actions_for_current_state.arel.constraints.reduce)
444
+ Sipity::WorkflowAction.where(workflow_actions_for_current_state.arel.constraints.reduce(:+))
445
445
  end
446
446
  end
447
447
  end
@@ -5,8 +5,8 @@ module Hyrax
5
5
  class CollectionMembershipValidator < ActiveModel::Validator
6
6
  ##
7
7
  # @param multiple_membership_checker
8
- def initialize(multiple_membership_checker: Hyrax::MultipleMembershipChecker, **options)
9
- @multiple_membership_checker = multiple_membership_checker
8
+ def initialize(options = {})
9
+ @multiple_membership_checker = options[:multiple_membership_checker] || Hyrax::MultipleMembershipChecker
10
10
  super(options)
11
11
  end
12
12
 
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Add support for engine routes to kaminari
4
+ Rails.application.config.to_prepare do
5
+ Kaminari::Helpers::Tag.class_eval do
6
+ def page_url_for(page)
7
+ params = params_for(page)
8
+ params[:only_path] = true
9
+ if @options[:route_set]
10
+ @options[:route_set].url_for params
11
+ else
12
+ @template.url_for params
13
+ end
14
+ end
15
+ end
16
+ end
@@ -50,7 +50,7 @@ The Samvera community is here to help. Please see our [support guide](../.github
50
50
  # Getting started
51
51
 
52
52
  This document contains instructions specific to setting up an app with __Hyrax
53
- v4.0.0.rc1__. If you are looking for instructions on installing a different
53
+ v4.0.0.rc2__. If you are looking for instructions on installing a different
54
54
  version, be sure to select the appropriate branch or tag from the drop-down
55
55
  menu above.
56
56
 
@@ -129,7 +129,7 @@ Note here that the following commands assume you're setting up Hyrax in a develo
129
129
 
130
130
  First, you'll need a working Ruby installation. You can install this via your operating system's package manager -- you are likely to get farther with OSX, Linux, or UNIX than Windows but your mileage may vary -- but we recommend using a Ruby version manager such as [RVM](https://rvm.io/) or [rbenv](https://github.com/sstephenson/rbenv).
131
131
 
132
- Hyrax supports Ruby 2.5, 2.6, and 2.7. When starting a new project, we recommend using the latest Ruby 2.7 version.
132
+ Hyrax supports Ruby 2.7, 3.0, 3.1 and 3.2. When starting a new project, we recommend using the latest Ruby 3.2 version.
133
133
 
134
134
  ## Redis
135
135
 
@@ -159,7 +159,7 @@ NOTE: The steps need to be done in order to create a new Hyrax based app.
159
159
  Generate a new Rails application using the template.
160
160
 
161
161
  ```
162
- rails _6.1.7.3_ new my_app -m https://raw.githubusercontent.com/samvera/hyrax/hyrax-v4.0.0.rc1/template.rb
162
+ rails _6.1.7.3_ new my_app -m https://raw.githubusercontent.com/samvera/hyrax/hyrax-v4.0.0.rc2/template.rb
163
163
  ```
164
164
 
165
165
  Generating a new Rails application using Hyrax's template above takes cares of a number of steps for you, including:
data/hyrax.gemspec CHANGED
@@ -32,7 +32,7 @@ SUMMARY
32
32
  # http://guides.rubyonrails.org/maintenance_policy.html
33
33
  spec.add_dependency 'rails', '~> 6.0'
34
34
 
35
- spec.add_dependency 'active-fedora', '~> 13.1', '>= 13.1.2'
35
+ spec.add_dependency 'active-fedora', '~> 14.0'
36
36
  spec.add_dependency 'almond-rails', '~> 0.1'
37
37
  spec.add_dependency 'awesome_nested_set', '~> 3.1'
38
38
  spec.add_dependency 'blacklight', '~> 7.29'
@@ -53,18 +53,16 @@ SUMMARY
53
53
  spec.add_dependency 'font-awesome-rails', '~> 4.2'
54
54
  spec.add_dependency 'hydra-derivatives', '~> 3.3'
55
55
  spec.add_dependency 'hydra-editor', '~> 6.0'
56
- spec.add_dependency 'hydra-file_characterization', '~> 1.1.2'
56
+ spec.add_dependency 'hydra-file_characterization', '~> 1.1'
57
57
  spec.add_dependency 'hydra-head', '~> 12.0'
58
58
  spec.add_dependency 'hydra-works', '>= 0.16'
59
59
  spec.add_dependency 'iiif_manifest', '>= 0.3', '< 2.0'
60
60
  spec.add_dependency 'json-schema' # for Arkivo
61
- # Pin more tightly because 0.x gems are potentially unstable
62
- spec.add_dependency 'kaminari_route_prefix', '~> 0.1.1'
63
61
  spec.add_dependency 'legato', '~> 0.3'
64
62
  spec.add_dependency 'linkeddata' # Required for getting values from geonames
65
63
  spec.add_dependency 'mailboxer', '~> 0.12'
66
64
  spec.add_dependency 'nest', '~> 3.1'
67
- spec.add_dependency 'noid-rails', '~> 3.0.0'
65
+ spec.add_dependency 'noid-rails', '~> 3.0'
68
66
  spec.add_dependency 'oauth'
69
67
  spec.add_dependency 'oauth2', '~> 1.2'
70
68
  spec.add_dependency 'openseadragon'
@@ -79,7 +77,6 @@ SUMMARY
79
77
  spec.add_dependency 'reform', '~> 2.3'
80
78
  spec.add_dependency 'reform-rails', '~> 0.2.0'
81
79
  spec.add_dependency 'retriable', '>= 2.9', '< 4.0'
82
- spec.add_dependency 'samvera-nesting_indexer', '~> 2.0'
83
80
  spec.add_dependency 'signet'
84
81
  spec.add_dependency 'tinymce-rails', '~> 5.10'
85
82
  spec.add_dependency 'valkyrie', '~> 3.0.1'
@@ -880,6 +880,17 @@ module Hyrax
880
880
  @derivative_services ||= [Hyrax::FileSetDerivativesService]
881
881
  end
882
882
 
883
+ attr_writer :visibility_map
884
+ # A mapping from visibility string values to permissions; the default and
885
+ # reference implementation is provided by {Hyrax::VisibilityMap}.
886
+ #
887
+ # @return [Hyrax::VisibilityMap]
888
+ # @see Hyrax::VisibilityReader
889
+ # @see Hyrax::VisibilityWriter
890
+ def visibility_map
891
+ @visibility_map ||= Hyrax::VisibilityMap.instance
892
+ end
893
+
883
894
  private
884
895
 
885
896
  # @param [Symbol, #to_s] model_name - symbol representing the model
@@ -27,7 +27,7 @@ module Hyrax
27
27
  # @note adds behavior to clear the cache whenever a manual fetch of data
28
28
  # is performed.
29
29
  # @see ActiveTriples::Resource#fetch
30
- def fetch(*)
30
+ def fetch(*, **)
31
31
  Rails.cache.delete(cache_key)
32
32
  super
33
33
  end
data/lib/hyrax/engine.rb CHANGED
@@ -107,6 +107,8 @@ module Hyrax
107
107
 
108
108
  ActiveFedora::Base.translate_uri_to_id = c.translate_uri_to_id
109
109
  ActiveFedora::Base.translate_id_to_uri = c.translate_id_to_uri
110
+ ActiveFedora::File.translate_uri_to_id = c.translate_uri_to_id
111
+ ActiveFedora::File.translate_id_to_uri = c.translate_id_to_uri
110
112
 
111
113
  ::Noid::Rails.config.template = c.noid_template
112
114
  ::Noid::Rails.config.minter_class = c.noid_minter_class
@@ -95,7 +95,8 @@ module Hyrax
95
95
  def call(value)
96
96
  Success(
97
97
  steps.inject(value) do |val, step_name|
98
- yield container[step_name].call(val, *step_arguments_for(step_name))
98
+ args = step_arguments_for(step_name)
99
+ yield container[step_name].call(val, *args[0..-2], **Hash(args[-1]))
99
100
  end
100
101
  )
101
102
  end
@@ -119,7 +120,7 @@ module Hyrax
119
120
  # tx = Hyrax::Transactions::Transaction.new(steps: [:first_step, :second_step])
120
121
  # result = tx.with_step_args(second_step: {named_parameter: :param_value}).call(:value)
121
122
  #
122
- def with_step_args(args)
123
+ def with_step_args(**args)
123
124
  raise(ArgumentError, key_err_msg(args.keys)) if
124
125
  args.keys.any? { |key| !step?(key) }
125
126
 
data/lib/hyrax/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Hyrax
3
- VERSION = '4.0.0.rc1'
3
+ VERSION = '4.0.0.rc2'
4
4
  end
data/lib/hyrax.rb CHANGED
@@ -20,7 +20,6 @@ require 'hyrax/version'
20
20
  require 'hyrax/inflections'
21
21
  require 'hyrax/name'
22
22
  require 'hyrax/valkyrie_can_can_adapter'
23
- require 'kaminari_route_prefix'
24
23
  require 'valkyrie/indexing_adapter'
25
24
  require 'valkyrie/indexing/solr/indexing_adapter'
26
25
  require 'valkyrie/indexing/null_indexing_adapter'
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'faraday/multipart'
4
+
3
5
  module Wings
4
6
  module Valkyrie
5
7
  ##
@@ -67,8 +69,9 @@ module Wings
67
69
 
68
70
  reader = RDF::Reader.for(content_type: response.headers['content-type'])
69
71
  version_graph = RDF::Graph.new << reader.new(response.body)
72
+ query = { predicate: RDF::Vocab::Fcrepo4.hasVersion }
70
73
 
71
- version_graph.query(predicate: RDF::Vocab::Fcrepo4.hasVersion).objects.map do |uri|
74
+ version_graph.query(query).objects.map do |uri|
72
75
  timestamp =
73
76
  version_graph.query([uri, RDF::Vocab::Fcrepo4.created, :created])
74
77
  .first_object
data/template.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  # Hack for https://github.com/rails/rails/issues/35153
3
3
  gsub_file 'Gemfile', /^gem ["']sqlite3["']$/, 'gem "sqlite3", "~> 1.3.0"'
4
- gem 'hyrax', '4.0.0.rc1'
4
+ gem 'hyrax', '4.0.0.rc2'
5
5
  run 'bundle install'
6
6
  generate 'hyrax:install', '-f'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyrax
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.rc1
4
+ version: 4.0.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2023-03-31 00:00:00.000000000 Z
17
+ date: 2023-05-01 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: rails
@@ -36,20 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '13.1'
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- version: 13.1.2
39
+ version: '14.0'
43
40
  type: :runtime
44
41
  prerelease: false
45
42
  version_requirements: !ruby/object:Gem::Requirement
46
43
  requirements:
47
44
  - - "~>"
48
45
  - !ruby/object:Gem::Version
49
- version: '13.1'
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: 13.1.2
46
+ version: '14.0'
53
47
  - !ruby/object:Gem::Dependency
54
48
  name: almond-rails
55
49
  requirement: !ruby/object:Gem::Requirement
@@ -328,14 +322,14 @@ dependencies:
328
322
  requirements:
329
323
  - - "~>"
330
324
  - !ruby/object:Gem::Version
331
- version: 1.1.2
325
+ version: '1.1'
332
326
  type: :runtime
333
327
  prerelease: false
334
328
  version_requirements: !ruby/object:Gem::Requirement
335
329
  requirements:
336
330
  - - "~>"
337
331
  - !ruby/object:Gem::Version
338
- version: 1.1.2
332
+ version: '1.1'
339
333
  - !ruby/object:Gem::Dependency
340
334
  name: hydra-head
341
335
  requirement: !ruby/object:Gem::Requirement
@@ -398,20 +392,6 @@ dependencies:
398
392
  - - ">="
399
393
  - !ruby/object:Gem::Version
400
394
  version: '0'
401
- - !ruby/object:Gem::Dependency
402
- name: kaminari_route_prefix
403
- requirement: !ruby/object:Gem::Requirement
404
- requirements:
405
- - - "~>"
406
- - !ruby/object:Gem::Version
407
- version: 0.1.1
408
- type: :runtime
409
- prerelease: false
410
- version_requirements: !ruby/object:Gem::Requirement
411
- requirements:
412
- - - "~>"
413
- - !ruby/object:Gem::Version
414
- version: 0.1.1
415
395
  - !ruby/object:Gem::Dependency
416
396
  name: legato
417
397
  requirement: !ruby/object:Gem::Requirement
@@ -474,14 +454,14 @@ dependencies:
474
454
  requirements:
475
455
  - - "~>"
476
456
  - !ruby/object:Gem::Version
477
- version: 3.0.0
457
+ version: '3.0'
478
458
  type: :runtime
479
459
  prerelease: false
480
460
  version_requirements: !ruby/object:Gem::Requirement
481
461
  requirements:
482
462
  - - "~>"
483
463
  - !ruby/object:Gem::Version
484
- version: 3.0.0
464
+ version: '3.0'
485
465
  - !ruby/object:Gem::Dependency
486
466
  name: oauth
487
467
  requirement: !ruby/object:Gem::Requirement
@@ -696,20 +676,6 @@ dependencies:
696
676
  - - "<"
697
677
  - !ruby/object:Gem::Version
698
678
  version: '4.0'
699
- - !ruby/object:Gem::Dependency
700
- name: samvera-nesting_indexer
701
- requirement: !ruby/object:Gem::Requirement
702
- requirements:
703
- - - "~>"
704
- - !ruby/object:Gem::Version
705
- version: '2.0'
706
- type: :runtime
707
- prerelease: false
708
- version_requirements: !ruby/object:Gem::Requirement
709
- requirements:
710
- - - "~>"
711
- - !ruby/object:Gem::Version
712
- version: '2.0'
713
679
  - !ruby/object:Gem::Dependency
714
680
  name: signet
715
681
  requirement: !ruby/object:Gem::Requirement
@@ -2962,6 +2928,7 @@ files:
2962
2928
  - config/i18n-tasks.yml
2963
2929
  - config/initializers/1_healthz.rb
2964
2930
  - config/initializers/indexing_adapter_initializer.rb
2931
+ - config/initializers/kaminari_engine_patch.rb
2965
2932
  - config/initializers/listeners.rb
2966
2933
  - config/initializers/reform_rails_6_1_monkey_patch.rb
2967
2934
  - config/initializers/simple_form.rb
@@ -3329,7 +3296,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
3329
3296
  - !ruby/object:Gem::Version
3330
3297
  version: 1.3.1
3331
3298
  requirements: []
3332
- rubygems_version: 3.4.10
3299
+ rubygems_version: 3.4.12
3333
3300
  signing_key:
3334
3301
  specification_version: 4
3335
3302
  summary: Hyrax is a front-end based on the robust Samvera framework, providing a user