hyrax 5.0.5 → 5.1.0.pre.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/.dassie/Gemfile +11 -12
  3. data/.dassie/bin/rails +0 -5
  4. data/.dassie/bin/rake +0 -5
  5. data/.dassie/config/application.rb +2 -1
  6. data/.dassie/config/environments/development.rb +1 -1
  7. data/.dassie/config/environments/production.rb +4 -2
  8. data/.dassie/config/environments/test.rb +1 -1
  9. data/.dassie/config/initializers/riiif.rb +20 -18
  10. data/.dassie/db/schema.rb +109 -110
  11. data/.github/workflows/lint-build-test.yml +1 -1
  12. data/.koppie/Gemfile +10 -11
  13. data/.koppie/bin/rails +0 -5
  14. data/.koppie/bin/rake +0 -5
  15. data/.koppie/config/application.rb +2 -1
  16. data/.koppie/config/environments/development.rb +1 -1
  17. data/.koppie/config/environments/production.rb +4 -2
  18. data/.koppie/config/environments/test.rb +1 -1
  19. data/.koppie/config/initializers/hyrax.rb +20 -17
  20. data/.koppie/config/initializers/riiif.rb +21 -18
  21. data/Dockerfile +7 -6
  22. data/Gemfile +0 -1
  23. data/app/actors/hyrax/actors/add_to_work_actor.rb +1 -1
  24. data/app/actors/hyrax/actors/apply_order_actor.rb +1 -1
  25. data/app/assets/stylesheets/hyrax/_tinymce.scss +6 -0
  26. data/app/controllers/concerns/hyrax/valkyrie_downloads_controller_behavior.rb +0 -1
  27. data/app/controllers/concerns/hyrax/works_controller_behavior.rb +1 -0
  28. data/app/controllers/hyrax/admin/analytics/work_reports_controller.rb +4 -4
  29. data/app/controllers/hyrax/admin/permission_template_accesses_controller.rb +4 -4
  30. data/app/controllers/hyrax/api/zotero_controller.rb +1 -1
  31. data/app/jobs/migrate_files_to_valkyrie_job.rb +21 -33
  32. data/app/models/admin_set.rb +2 -2
  33. data/app/models/concerns/hyrax/permissions/writable.rb +1 -2
  34. data/app/models/concerns/hyrax/solr_document_behavior.rb +2 -5
  35. data/app/models/concerns/hyrax/valkyrie_lazy_migration.rb +1 -0
  36. data/app/models/hyrax/collection_type.rb +4 -4
  37. data/app/models/hyrax/file_metadata.rb +7 -22
  38. data/app/models/single_use_link.rb +1 -1
  39. data/app/services/hyrax/analytics/ga4/base.rb +1 -1
  40. data/app/services/hyrax/analytics/ga4.rb +1 -5
  41. data/app/services/hyrax/listeners.rb +1 -0
  42. data/app/services/hyrax/statistics/term_query.rb +1 -1
  43. data/app/services/hyrax/workflow.rb +8 -0
  44. data/app/services/migrate_resource_service.rb +1 -1
  45. data/app/validators/hyrax/has_one_title_validator.rb +1 -1
  46. data/app/views/hyrax/admin/analytics/collection_reports/_top_collections.html.erb +7 -3
  47. data/app/views/hyrax/admin/analytics/work_reports/_top_file_set_downloads.html.erb +6 -3
  48. data/app/views/hyrax/admin/analytics/work_reports/_top_works.html.erb +3 -2
  49. data/app/views/hyrax/admin/analytics/work_reports/_work_files.html.erb +6 -1
  50. data/chart/hyrax/Chart.yaml +1 -1
  51. data/config/initializers/1_healthz.rb +2 -1
  52. data/config/initializers/ar_test_fixture_monkey_patch.rb +8 -0
  53. data/config/initializers/arel_rails_7_2_monkey_patch.rb +6 -0
  54. data/config/initializers/indexing_adapter_initializer.rb +0 -4
  55. data/config/initializers/listeners.rb +4 -2
  56. data/config/initializers/new_framework_defaults_7_2.rb +8 -0
  57. data/config/metadata/core_metadata.yaml +0 -1
  58. data/docker-compose-dassie.yml +4 -4
  59. data/docker-compose-sirenia.yml +1 -1
  60. data/documentation/developing-your-hyrax-based-app.md +6 -6
  61. data/hyrax.gemspec +8 -8
  62. data/lib/freyja/persister.rb +4 -11
  63. data/lib/generators/hyrax/config_generator.rb +0 -5
  64. data/lib/generators/hyrax/install_generator.rb +1 -1
  65. data/lib/generators/hyrax/templates/config/initializers/riiif.rb +21 -19
  66. data/lib/hyrax/configuration.rb +8 -22
  67. data/lib/hyrax/controlled_vocabulary/importer/language.rb +1 -1
  68. data/lib/hyrax/engine.rb +15 -10
  69. data/lib/hyrax/transactions/steps/add_file_sets.rb +1 -2
  70. data/lib/hyrax/version.rb +1 -1
  71. data/lib/hyrax.rb +4 -1
  72. data/template.rb +6 -1
  73. metadata +40 -43
  74. data/.dassie/bin/spring +0 -17
  75. data/.dassie/config/initializers/mini_magick.rb +0 -6
  76. data/.dassie/config/spring.rb +0 -6
  77. data/.koppie/bin/spring +0 -17
  78. data/.koppie/config/initializers/mini_magick.rb +0 -6
  79. data/.koppie/config/spring.rb +0 -6
  80. data/app/jobs/concerns/hyrax/queued_job_behavior.rb +0 -22
  81. data/app/jobs/hyrax/queued_delete_job.rb +0 -11
  82. data/app/jobs/hyrax/queued_indexing_job.rb +0 -11
  83. data/app/jobs/migrate_sipity_entity_job.rb +0 -21
  84. data/config/initializers/reform_rails_6_1_monkey_patch.rb +0 -27
  85. data/lib/generators/hyrax/templates/config/initializers/mini_magick.rb +0 -6
  86. data/lib/valkyrie/indexing/redis_queue/indexing_adapter.rb +0 -142
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: 5.0.5
4
+ version: 5.1.0.pre.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
@@ -13,7 +13,7 @@ authors:
13
13
  - Esmé Cowles
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2025-06-04 00:00:00.000000000 Z
16
+ date: 2025-03-04 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: rails
@@ -21,28 +21,34 @@ dependencies:
21
21
  requirements:
22
22
  - - "~>"
23
23
  - !ruby/object:Gem::Version
24
- version: '6.1'
24
+ version: '7.2'
25
+ - - "<"
26
+ - !ruby/object:Gem::Version
27
+ version: '8.0'
25
28
  type: :runtime
26
29
  prerelease: false
27
30
  version_requirements: !ruby/object:Gem::Requirement
28
31
  requirements:
29
32
  - - "~>"
30
33
  - !ruby/object:Gem::Version
31
- version: '6.1'
34
+ version: '7.2'
35
+ - - "<"
36
+ - !ruby/object:Gem::Version
37
+ version: '8.0'
32
38
  - !ruby/object:Gem::Dependency
33
39
  name: active-fedora
34
40
  requirement: !ruby/object:Gem::Requirement
35
41
  requirements:
36
42
  - - "~>"
37
43
  - !ruby/object:Gem::Version
38
- version: '14.0'
44
+ version: '15.0'
39
45
  type: :runtime
40
46
  prerelease: false
41
47
  version_requirements: !ruby/object:Gem::Requirement
42
48
  requirements:
43
49
  - - "~>"
44
50
  - !ruby/object:Gem::Version
45
- version: '14.0'
51
+ version: '15.0'
46
52
  - !ruby/object:Gem::Dependency
47
53
  name: almond-rails
48
54
  requirement: !ruby/object:Gem::Requirement
@@ -341,28 +347,28 @@ dependencies:
341
347
  requirements:
342
348
  - - "~>"
343
349
  - !ruby/object:Gem::Version
344
- version: '3.3'
350
+ version: '4.0'
345
351
  type: :runtime
346
352
  prerelease: false
347
353
  version_requirements: !ruby/object:Gem::Requirement
348
354
  requirements:
349
355
  - - "~>"
350
356
  - !ruby/object:Gem::Version
351
- version: '3.3'
357
+ version: '4.0'
352
358
  - !ruby/object:Gem::Dependency
353
359
  name: hydra-editor
354
360
  requirement: !ruby/object:Gem::Requirement
355
361
  requirements:
356
362
  - - "~>"
357
363
  - !ruby/object:Gem::Version
358
- version: '6.0'
364
+ version: '7.0'
359
365
  type: :runtime
360
366
  prerelease: false
361
367
  version_requirements: !ruby/object:Gem::Requirement
362
368
  requirements:
363
369
  - - "~>"
364
370
  - !ruby/object:Gem::Version
365
- version: '6.0'
371
+ version: '7.0'
366
372
  - !ruby/object:Gem::Dependency
367
373
  name: hydra-file_characterization
368
374
  requirement: !ruby/object:Gem::Requirement
@@ -383,14 +389,14 @@ dependencies:
383
389
  requirements:
384
390
  - - "~>"
385
391
  - !ruby/object:Gem::Version
386
- version: '12.0'
392
+ version: '13.0'
387
393
  type: :runtime
388
394
  prerelease: false
389
395
  version_requirements: !ruby/object:Gem::Requirement
390
396
  requirements:
391
397
  - - "~>"
392
398
  - !ruby/object:Gem::Version
393
- version: '12.0'
399
+ version: '13.0'
394
400
  - !ruby/object:Gem::Dependency
395
401
  name: hydra-works
396
402
  requirement: !ruby/object:Gem::Requirement
@@ -467,6 +473,20 @@ dependencies:
467
473
  - - ">="
468
474
  - !ruby/object:Gem::Version
469
475
  version: '0'
476
+ - !ruby/object:Gem::Dependency
477
+ name: listen
478
+ requirement: !ruby/object:Gem::Requirement
479
+ requirements:
480
+ - - "~>"
481
+ - !ruby/object:Gem::Version
482
+ version: '3.9'
483
+ type: :runtime
484
+ prerelease: false
485
+ version_requirements: !ruby/object:Gem::Requirement
486
+ requirements:
487
+ - - "~>"
488
+ - !ruby/object:Gem::Version
489
+ version: '3.9'
470
490
  - !ruby/object:Gem::Dependency
471
491
  name: mailboxer
472
492
  requirement: !ruby/object:Gem::Requirement
@@ -551,20 +571,6 @@ dependencies:
551
571
  - - "~>"
552
572
  - !ruby/object:Gem::Version
553
573
  version: '0.9'
554
- - !ruby/object:Gem::Dependency
555
- name: posix-spawn
556
- requirement: !ruby/object:Gem::Requirement
557
- requirements:
558
- - - ">="
559
- - !ruby/object:Gem::Version
560
- version: '0'
561
- type: :runtime
562
- prerelease: false
563
- version_requirements: !ruby/object:Gem::Requirement
564
- requirements:
565
- - - ">="
566
- - !ruby/object:Gem::Version
567
- version: '0'
568
574
  - !ruby/object:Gem::Dependency
569
575
  name: qa
570
576
  requirement: !ruby/object:Gem::Requirement
@@ -853,14 +859,14 @@ dependencies:
853
859
  name: database_cleaner
854
860
  requirement: !ruby/object:Gem::Requirement
855
861
  requirements:
856
- - - "~>"
862
+ - - ">="
857
863
  - !ruby/object:Gem::Version
858
864
  version: '1.3'
859
865
  type: :development
860
866
  prerelease: false
861
867
  version_requirements: !ruby/object:Gem::Requirement
862
868
  requirements:
863
- - - "~>"
869
+ - - ">="
864
870
  - !ruby/object:Gem::Version
865
871
  version: '1.3'
866
872
  - !ruby/object:Gem::Dependency
@@ -967,14 +973,14 @@ dependencies:
967
973
  requirements:
968
974
  - - "~>"
969
975
  - !ruby/object:Gem::Version
970
- version: '6.0'
976
+ version: '7.0'
971
977
  type: :development
972
978
  prerelease: false
973
979
  version_requirements: !ruby/object:Gem::Requirement
974
980
  requirements:
975
981
  - - "~>"
976
982
  - !ruby/object:Gem::Version
977
- version: '6.0'
983
+ version: '7.0'
978
984
  - !ruby/object:Gem::Dependency
979
985
  name: rspec_junit_formatter
980
986
  requirement: !ruby/object:Gem::Requirement
@@ -1205,7 +1211,6 @@ files:
1205
1211
  - ".dassie/bin/rails"
1206
1212
  - ".dassie/bin/rake"
1207
1213
  - ".dassie/bin/setup"
1208
- - ".dassie/bin/spring"
1209
1214
  - ".dassie/bin/update"
1210
1215
  - ".dassie/bin/yarn"
1211
1216
  - ".dassie/config.ru"
@@ -1236,7 +1241,6 @@ files:
1236
1241
  - ".dassie/config/initializers/hyrax.rb"
1237
1242
  - ".dassie/config/initializers/mailboxer.rb"
1238
1243
  - ".dassie/config/initializers/mime_types.rb"
1239
- - ".dassie/config/initializers/mini_magick.rb"
1240
1244
  - ".dassie/config/initializers/publisher.rb"
1241
1245
  - ".dassie/config/initializers/redis_config.rb"
1242
1246
  - ".dassie/config/initializers/riiif.rb"
@@ -1276,7 +1280,6 @@ files:
1276
1280
  - ".dassie/config/role_map.yml"
1277
1281
  - ".dassie/config/routes.rb"
1278
1282
  - ".dassie/config/solr.yml"
1279
- - ".dassie/config/spring.rb"
1280
1283
  - ".dassie/config/storage.yml"
1281
1284
  - ".dassie/config/tinymce.yml"
1282
1285
  - ".dassie/config/uv/uv-config.json"
@@ -1481,7 +1484,6 @@ files:
1481
1484
  - ".koppie/bin/rails"
1482
1485
  - ".koppie/bin/rake"
1483
1486
  - ".koppie/bin/setup"
1484
- - ".koppie/bin/spring"
1485
1487
  - ".koppie/bin/update"
1486
1488
  - ".koppie/bin/yarn"
1487
1489
  - ".koppie/config.ru"
@@ -1518,7 +1520,6 @@ files:
1518
1520
  - ".koppie/config/initializers/inflections.rb"
1519
1521
  - ".koppie/config/initializers/mailboxer.rb"
1520
1522
  - ".koppie/config/initializers/mime_types.rb"
1521
- - ".koppie/config/initializers/mini_magick.rb"
1522
1523
  - ".koppie/config/initializers/publisher.rb"
1523
1524
  - ".koppie/config/initializers/redis_config.rb"
1524
1525
  - ".koppie/config/initializers/riiif.rb"
@@ -1545,7 +1546,6 @@ files:
1545
1546
  - ".koppie/config/routes.rb"
1546
1547
  - ".koppie/config/sidekiq.yml"
1547
1548
  - ".koppie/config/solr.yml"
1548
- - ".koppie/config/spring.rb"
1549
1549
  - ".koppie/config/storage.yml"
1550
1550
  - ".koppie/config/tinymce.yml"
1551
1551
  - ".koppie/config/uv/uv-config.json"
@@ -2067,7 +2067,6 @@ files:
2067
2067
  - app/jobs/characterize_job.rb
2068
2068
  - app/jobs/concerns/hyrax/members_permission_job_behavior.rb
2069
2069
  - app/jobs/concerns/hyrax/permission_job_behavior.rb
2070
- - app/jobs/concerns/hyrax/queued_job_behavior.rb
2071
2070
  - app/jobs/content_delete_event_job.rb
2072
2071
  - app/jobs/content_deposit_event_job.rb
2073
2072
  - app/jobs/content_event_job.rb
@@ -2086,8 +2085,6 @@ files:
2086
2085
  - app/jobs/hyrax/grant_read_job.rb
2087
2086
  - app/jobs/hyrax/grant_read_to_members_job.rb
2088
2087
  - app/jobs/hyrax/propagate_change_depositor_job.rb
2089
- - app/jobs/hyrax/queued_delete_job.rb
2090
- - app/jobs/hyrax/queued_indexing_job.rb
2091
2088
  - app/jobs/hyrax/revoke_edit_from_members_job.rb
2092
2089
  - app/jobs/hyrax/revoke_edit_job.rb
2093
2090
  - app/jobs/iiif_manifest_cache_prewarm_job.rb
@@ -2099,7 +2096,6 @@ files:
2099
2096
  - app/jobs/lease_expiry_job.rb
2100
2097
  - app/jobs/migrate_files_to_valkyrie_job.rb
2101
2098
  - app/jobs/migrate_resources_job.rb
2102
- - app/jobs/migrate_sipity_entity_job.rb
2103
2099
  - app/jobs/resolrize_job.rb
2104
2100
  - app/jobs/stream_notifications_job.rb
2105
2101
  - app/jobs/user_edit_profile_event_job.rb
@@ -2496,6 +2492,7 @@ files:
2496
2492
  - app/services/hyrax/work_resource_query_service.rb
2497
2493
  - app/services/hyrax/work_thumbnail_path_service.rb
2498
2494
  - app/services/hyrax/work_uploads_handler.rb
2495
+ - app/services/hyrax/workflow.rb
2499
2496
  - app/services/hyrax/workflow/abstract_notification.rb
2500
2497
  - app/services/hyrax/workflow/action_taken_service.rb
2501
2498
  - app/services/hyrax/workflow/actionable_objects.rb
@@ -3001,11 +2998,13 @@ files:
3001
2998
  - config/features.rb
3002
2999
  - config/i18n-tasks.yml
3003
3000
  - config/initializers/1_healthz.rb
3001
+ - config/initializers/ar_test_fixture_monkey_patch.rb
3002
+ - config/initializers/arel_rails_7_2_monkey_patch.rb
3004
3003
  - config/initializers/file_length_patch.rb
3005
3004
  - config/initializers/indexing_adapter_initializer.rb
3006
3005
  - config/initializers/kaminari_engine_patch.rb
3007
3006
  - config/initializers/listeners.rb
3008
- - config/initializers/reform_rails_6_1_monkey_patch.rb
3007
+ - config/initializers/new_framework_defaults_7_2.rb
3009
3008
  - config/initializers/simple_form.rb
3010
3009
  - config/initializers/storage_adapter_initializer.rb
3011
3010
  - config/initializers/valkyrie_id_equality.rb
@@ -3090,7 +3089,6 @@ files:
3090
3089
  - lib/generators/hyrax/templates/config/initializers/1_valkyrie.rb
3091
3090
  - lib/generators/hyrax/templates/config/initializers/file_services.rb
3092
3091
  - lib/generators/hyrax/templates/config/initializers/hyrax.rb
3093
- - lib/generators/hyrax/templates/config/initializers/mini_magick.rb
3094
3092
  - lib/generators/hyrax/templates/config/initializers/publisher.rb
3095
3093
  - lib/generators/hyrax/templates/config/initializers/redis_config.rb
3096
3094
  - lib/generators/hyrax/templates/config/initializers/riiif.rb
@@ -3367,7 +3365,6 @@ files:
3367
3365
  - lib/tasks/universal_viewer.rake
3368
3366
  - lib/tasks/workflow.rake
3369
3367
  - lib/valkyrie/indexing/null_indexing_adapter.rb
3370
- - lib/valkyrie/indexing/redis_queue/indexing_adapter.rb
3371
3368
  - lib/valkyrie/indexing/solr/indexing_adapter.rb
3372
3369
  - lib/valkyrie/indexing_adapter.rb
3373
3370
  - lib/wings.rb
data/.dassie/bin/spring DELETED
@@ -1,17 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # This file loads Spring without using Bundler, in order to be fast.
4
- # It gets overwritten when you run the `spring binstub` command.
5
-
6
- unless defined?(Spring)
7
- require 'rubygems'
8
- require 'bundler'
9
-
10
- lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read)
11
- spring = lockfile.specs.detect { |spec| spec.name == 'spring' }
12
- if spring
13
- Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path
14
- gem 'spring', spring.version
15
- require 'spring/binstub'
16
- end
17
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'mini_magick'
3
-
4
- MiniMagick.configure do |config|
5
- config.shell_api = "posix-spawn"
6
- end
@@ -1,6 +0,0 @@
1
- %w[
2
- .ruby-version
3
- .rbenv-vars
4
- tmp/restart.txt
5
- tmp/caching-dev.txt
6
- ].each { |path| Spring.watch(path) }
data/.koppie/bin/spring DELETED
@@ -1,17 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # This file loads Spring without using Bundler, in order to be fast.
4
- # It gets overwritten when you run the `spring binstub` command.
5
-
6
- unless defined?(Spring)
7
- require 'rubygems'
8
- require 'bundler'
9
-
10
- lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read)
11
- spring = lockfile.specs.detect { |spec| spec.name == 'spring' }
12
- if spring
13
- Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path
14
- gem 'spring', spring.version
15
- require 'spring/binstub'
16
- end
17
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'mini_magick'
3
-
4
- MiniMagick.configure do |config|
5
- config.shell_api = "posix-spawn"
6
- end
@@ -1,6 +0,0 @@
1
- %w[
2
- .ruby-version
3
- .rbenv-vars
4
- tmp/restart.txt
5
- tmp/caching-dev.txt
6
- ].each { |path| Spring.watch(path) }
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
- module Hyrax
3
- # Grants the user's edit access on the provided FileSet
4
- module QueuedJobBehavior
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- queue_as Hyrax.config.ingest_queue_name
9
- cattr_accessor :requeue_frequency
10
- end
11
-
12
- private
13
-
14
- def redis_queue
15
- Valkyrie::IndexingAdapter.find(:redis_queue)
16
- end
17
-
18
- def requeue(**args)
19
- self.class.set(wait_until: (self.class.requeue_frequency || 5.minutes).from_now).perform_later(**args)
20
- end
21
- end
22
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
- module Hyrax
3
- class QueuedDeleteJob < ApplicationJob
4
- include QueuedJobBehavior
5
-
6
- def perform(size: 200)
7
- redis_queue.delete_queue(size: size)
8
- requeue(size: size)
9
- end
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
- module Hyrax
3
- class QueuedIndexingJob < ApplicationJob
4
- include QueuedJobBehavior
5
-
6
- def perform(size: 200)
7
- redis_queue.index_queue(size: size)
8
- requeue(size: size)
9
- end
10
- end
11
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # migrates a resource's sipity entity so it can be found
4
- class MigrateSipityEntityJob < ApplicationJob
5
- # input [String] id of a migrated resource
6
- def perform(id:)
7
- resource = Hyrax.query_service.find_by(id: id)
8
- new_gid = Hyrax::GlobalID(resource).to_s
9
- return if Sipity::Entity.find_by(proxy_for_global_id: new_gid)
10
-
11
- work = resource.internal_resource.constantize.find(id)
12
- original_gid = Hyrax::GlobalID(work).to_s
13
- return if new_gid == original_gid
14
- original_entity = Sipity::Entity.find_by(proxy_for_global_id: original_gid)
15
- return if original_entity.nil?
16
- original_entity.update(proxy_for_global_id: new_gid)
17
- rescue ActiveFedora::ObjectNotFoundError
18
- # this happens when the resource was never in Fedora so there is nothing to migrate.
19
- # We don't want to retry the job so we don't raise an error.
20
- end
21
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Taken from https://github.com/trailblazer/reform-rails/issues/86#issuecomment-763120151
4
- # rubocop:disable Metrics/CyclomaticComplexity
5
- # rubocop:disable Lint/UselessAssignment
6
- module Reform
7
- class Contract < Disposable::Twin
8
- class Result
9
- private
10
-
11
- # this doesn't do nested errors (e.g. )
12
- def filter_for(method, *args)
13
- @results.collect { |r| r.public_send(method, *args).to_h }
14
- .inject({}) { |hah, err| hah.merge(err) { |_key, old_v, new_v| (new_v.is_a?(Array) ? (old_v |= new_v) : old_v.merge(new_v)) } }
15
- .find_all do |_k, v| # filter :nested=>{:something=>["too nested!"]} #DISCUSS: do we want that here?
16
- if v.is_a?(Hash)
17
- nested_errors = v.select { |attr_key, val| attr_key.is_a?(Integer) && val.is_a?(Array) && val.any? }
18
- v = nested_errors.to_a if nested_errors.any?
19
- end
20
- v.is_a?(ActiveModel::DeprecationHandlingMessageArray)
21
- end.to_h
22
- end
23
- end
24
- end
25
- end
26
- # rubocop:enable Metrics/CyclomaticComplexity
27
- # rubocop:disable Lint/UselessAssignment
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'mini_magick'
3
-
4
- MiniMagick.configure do |config|
5
- config.shell_api = "posix-spawn"
6
- end
@@ -1,142 +0,0 @@
1
- # frozen_string_literal: true
2
- module Valkyrie
3
- module Indexing
4
- module RedisQueue
5
- class IndexingAdapter
6
- ##
7
- # @!attribute [r] connection
8
- # @return [RSolr::Client]
9
- attr_writer :connection
10
- attr_accessor :index_queue_name, :delete_queue_name
11
-
12
- ##
13
- # @param connection [RSolr::Client] The RSolr connection to index to.
14
- def initialize(connection: nil, index_queue_name: 'toindex', delete_queue_name: 'todelete')
15
- @connection = connection
16
- @index_queue_name = index_queue_name
17
- @delete_queue_name = delete_queue_name
18
- end
19
-
20
- def connection
21
- @connection ||= default_connection
22
- end
23
-
24
- def save(resource:)
25
- persist([resource])
26
- end
27
-
28
- def save_all(resources:)
29
- persist(resources)
30
- end
31
-
32
- # Deletes a Solr Document using the ID
33
- # @return [Array<Valkyrie::Resource>] resources which have been deleted from Solr
34
- def delete(resource:)
35
- connection.zadd(delete_queue_name, Time.current.to_i, resource.id.to_s)
36
- end
37
-
38
- # Delete the Solr index of all Documents
39
- def wipe!
40
- connection.del(index_queue_name)
41
- connection.del(index_queue_name + "-error")
42
- connection.del(delete_queue_name)
43
- connection.del(delete_queue_name + "-error")
44
- end
45
-
46
- def reset!
47
- self.connection = default_connection
48
- end
49
-
50
- def index_queue(size: 200)
51
- set = connection.zpopmin(index_queue_name, size)
52
- return [] if set.blank?
53
- # we have to load these one at a time because find_all_by_id gets duplicates during wings transition
54
- resources = set.map { |id, _time| Hyrax.query_service.find_by(id: id) }
55
- solr_indexer = Valkyrie::IndexingAdapter.find(:solr_index)
56
- solr_indexer.save_all(resources: resources)
57
- solr_indexer.connection.commit
58
- rescue
59
- # if anything goes wrong, try to requeue the items
60
- set.each { |id, time| connection.zadd(index_queue_name + "-error", time, id) }
61
- raise
62
- end
63
-
64
- # If a batch fails, try running them one at a time to get down to just records that really fail
65
- def index_error_queue(size: 200)
66
- size.times do
67
- set = connection.zpopmin(index_queue_name + "-error", 1)
68
- return [] if set.blank?
69
- # we have to load these one at a time because find_all_by_id gets duplicates during wings transition
70
- resources = set.map { |id, _time| Hyrax.query_service.find_by(id: id) }
71
- solr_indexer = Valkyrie::IndexingAdapter.find(:solr_index)
72
- solr_indexer.save_all(resources: resources)
73
- solr_indexer.connection.commit
74
- end
75
- rescue
76
- # if anything goes wrong, try to requeue the items
77
- set.each { |id, _time| connection.zadd(index_queue_name + "-error", Time.now.to_i, id) }
78
- raise
79
- end
80
-
81
- # We reach in to solr directly here to prevent needing to load the objects unnecessarily
82
- def delete_queue(size: 200)
83
- set = connection.zpopmin(delete_queue_name, size)
84
- return [] if set.blank?
85
- solr_indexer = Valkyrie::IndexingAdapter.find(:solr_index)
86
- set.each do |id, _time|
87
- solr_indexer.connection.delete_by_id id.to_s, { softCommit: true }
88
- end
89
- solr_indexer.connection.commit
90
- rescue
91
- # if anything goes wrong, try to requeue the items
92
- set.each { |id, time| connection.zadd(delete_queue_name + "-error", time, id) }
93
- raise
94
- end
95
-
96
- # If a batch fails, try running them one at a time to get down to just records that really fail
97
- def delete_error_queue(size: 200)
98
- size.times do
99
- set = connection.zpopmin(delete_queue_name + "-error", 1)
100
- return [] if set.blank?
101
- solr_indexer = Valkyrie::IndexingAdapter.find(:solr_index)
102
- set.each do |id, _time|
103
- solr_indexer.connection.delete_by_id id.to_s, { softCommit: true }
104
- end
105
- solr_indexer.connection.commit
106
- end
107
- rescue
108
- # if anything goes wrong, try to requeue the items
109
- set.each { |id, _time| connection.zadd(delete_queue_name + "-error", Time.now.to_i, id) }
110
- raise
111
- end
112
-
113
- def list_index
114
- connection.zrange(index_queue_name, 0, -1, with_scores: true)
115
- end
116
-
117
- def list_delete
118
- connection.zrange(delete_queue_name, 0, -1, with_scores: true)
119
- end
120
-
121
- def list_index_errors
122
- connection.zrange(index_queue_name + "-error", 0, -1, with_scores: true)
123
- end
124
-
125
- def list_delete_errors
126
- connection.zrange(delete_queue_name + "-error", 0, -1, with_scores: true)
127
- end
128
- private
129
-
130
- def persist(resources)
131
- resources.map do |r|
132
- connection.zadd(index_queue_name, Time.current.to_i, r.id.to_s)
133
- end
134
- end
135
-
136
- def default_connection
137
- Hyrax.config.redis_connection
138
- end
139
- end
140
- end
141
- end
142
- end