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.
- checksums.yaml +4 -4
- data/.dassie/Gemfile +11 -12
- data/.dassie/bin/rails +0 -5
- data/.dassie/bin/rake +0 -5
- data/.dassie/config/application.rb +2 -1
- data/.dassie/config/environments/development.rb +1 -1
- data/.dassie/config/environments/production.rb +4 -2
- data/.dassie/config/environments/test.rb +1 -1
- data/.dassie/config/initializers/riiif.rb +20 -18
- data/.dassie/db/schema.rb +109 -110
- data/.github/workflows/lint-build-test.yml +1 -1
- data/.koppie/Gemfile +10 -11
- data/.koppie/bin/rails +0 -5
- data/.koppie/bin/rake +0 -5
- data/.koppie/config/application.rb +2 -1
- data/.koppie/config/environments/development.rb +1 -1
- data/.koppie/config/environments/production.rb +4 -2
- data/.koppie/config/environments/test.rb +1 -1
- data/.koppie/config/initializers/hyrax.rb +20 -17
- data/.koppie/config/initializers/riiif.rb +21 -18
- data/Dockerfile +7 -6
- data/Gemfile +0 -1
- data/app/actors/hyrax/actors/add_to_work_actor.rb +1 -1
- data/app/actors/hyrax/actors/apply_order_actor.rb +1 -1
- data/app/assets/stylesheets/hyrax/_tinymce.scss +6 -0
- data/app/controllers/concerns/hyrax/valkyrie_downloads_controller_behavior.rb +0 -1
- data/app/controllers/concerns/hyrax/works_controller_behavior.rb +1 -0
- data/app/controllers/hyrax/admin/analytics/work_reports_controller.rb +4 -4
- data/app/controllers/hyrax/admin/permission_template_accesses_controller.rb +4 -4
- data/app/controllers/hyrax/api/zotero_controller.rb +1 -1
- data/app/jobs/migrate_files_to_valkyrie_job.rb +21 -33
- data/app/models/admin_set.rb +2 -2
- data/app/models/concerns/hyrax/permissions/writable.rb +1 -2
- data/app/models/concerns/hyrax/solr_document_behavior.rb +2 -5
- data/app/models/concerns/hyrax/valkyrie_lazy_migration.rb +1 -0
- data/app/models/hyrax/collection_type.rb +4 -4
- data/app/models/hyrax/file_metadata.rb +7 -22
- data/app/models/single_use_link.rb +1 -1
- data/app/services/hyrax/analytics/ga4/base.rb +1 -1
- data/app/services/hyrax/analytics/ga4.rb +1 -5
- data/app/services/hyrax/listeners.rb +1 -0
- data/app/services/hyrax/statistics/term_query.rb +1 -1
- data/app/services/hyrax/workflow.rb +8 -0
- data/app/services/migrate_resource_service.rb +1 -1
- data/app/validators/hyrax/has_one_title_validator.rb +1 -1
- data/app/views/hyrax/admin/analytics/collection_reports/_top_collections.html.erb +7 -3
- data/app/views/hyrax/admin/analytics/work_reports/_top_file_set_downloads.html.erb +6 -3
- data/app/views/hyrax/admin/analytics/work_reports/_top_works.html.erb +3 -2
- data/app/views/hyrax/admin/analytics/work_reports/_work_files.html.erb +6 -1
- data/chart/hyrax/Chart.yaml +1 -1
- data/config/initializers/1_healthz.rb +2 -1
- data/config/initializers/ar_test_fixture_monkey_patch.rb +8 -0
- data/config/initializers/arel_rails_7_2_monkey_patch.rb +6 -0
- data/config/initializers/indexing_adapter_initializer.rb +0 -4
- data/config/initializers/listeners.rb +4 -2
- data/config/initializers/new_framework_defaults_7_2.rb +8 -0
- data/config/metadata/core_metadata.yaml +0 -1
- data/docker-compose-dassie.yml +4 -4
- data/docker-compose-sirenia.yml +1 -1
- data/documentation/developing-your-hyrax-based-app.md +6 -6
- data/hyrax.gemspec +8 -8
- data/lib/freyja/persister.rb +4 -11
- data/lib/generators/hyrax/config_generator.rb +0 -5
- data/lib/generators/hyrax/install_generator.rb +1 -1
- data/lib/generators/hyrax/templates/config/initializers/riiif.rb +21 -19
- data/lib/hyrax/configuration.rb +8 -22
- data/lib/hyrax/controlled_vocabulary/importer/language.rb +1 -1
- data/lib/hyrax/engine.rb +15 -10
- data/lib/hyrax/transactions/steps/add_file_sets.rb +1 -2
- data/lib/hyrax/version.rb +1 -1
- data/lib/hyrax.rb +4 -1
- data/template.rb +6 -1
- metadata +40 -43
- data/.dassie/bin/spring +0 -17
- data/.dassie/config/initializers/mini_magick.rb +0 -6
- data/.dassie/config/spring.rb +0 -6
- data/.koppie/bin/spring +0 -17
- data/.koppie/config/initializers/mini_magick.rb +0 -6
- data/.koppie/config/spring.rb +0 -6
- data/app/jobs/concerns/hyrax/queued_job_behavior.rb +0 -22
- data/app/jobs/hyrax/queued_delete_job.rb +0 -11
- data/app/jobs/hyrax/queued_indexing_job.rb +0 -11
- data/app/jobs/migrate_sipity_entity_job.rb +0 -21
- data/config/initializers/reform_rails_6_1_monkey_patch.rb +0 -27
- data/lib/generators/hyrax/templates/config/initializers/mini_magick.rb +0 -6
- 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.
|
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-
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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/
|
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
|
data/.dassie/config/spring.rb
DELETED
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
|
data/.koppie/config/spring.rb
DELETED
@@ -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,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,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
|