valkyrie 2.1.2 → 3.0.0.pre.beta.2

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +36 -1
  3. data/.lando.yml +18 -0
  4. data/.rubocop.yml +10 -0
  5. data/.tool-versions +1 -1
  6. data/Appraisals +15 -0
  7. data/CHANGELOG.md +74 -14
  8. data/CONTRIBUTING.md +30 -8
  9. data/README.md +6 -17
  10. data/Rakefile +6 -1
  11. data/db/config.yml +1 -1
  12. data/gemfiles/activerecord_5_2.gemfile +0 -1
  13. data/gemfiles/activerecord_6_0.gemfile +0 -1
  14. data/gemfiles/activerecord_7_0.gemfile +11 -0
  15. data/gemfiles/faraday_0.gemfile +12 -0
  16. data/gemfiles/faraday_1.gemfile +12 -0
  17. data/lib/valkyrie/id.rb +1 -16
  18. data/lib/valkyrie/persistence/buffered_persister.rb +2 -2
  19. data/lib/valkyrie/persistence/composite_persister.rb +3 -3
  20. data/lib/valkyrie/persistence/custom_query_container.rb +8 -16
  21. data/lib/valkyrie/persistence/fedora/metadata_adapter.rb +5 -1
  22. data/lib/valkyrie/persistence/fedora/ordered_list.rb +4 -6
  23. data/lib/valkyrie/persistence/fedora/persister/model_converter.rb +0 -1
  24. data/lib/valkyrie/persistence/fedora/persister/orm_converter.rb +1 -26
  25. data/lib/valkyrie/persistence/fedora/persister.rb +3 -1
  26. data/lib/valkyrie/persistence/fedora/query_service.rb +1 -1
  27. data/lib/valkyrie/persistence/memory/persister.rb +18 -2
  28. data/lib/valkyrie/persistence/postgres/metadata_adapter.rb +11 -1
  29. data/lib/valkyrie/persistence/postgres/persister.rb +4 -1
  30. data/lib/valkyrie/persistence/solr/metadata_adapter.rb +15 -3
  31. data/lib/valkyrie/persistence/solr/model_converter.rb +8 -25
  32. data/lib/valkyrie/persistence/solr/orm_converter.rb +1 -1
  33. data/lib/valkyrie/persistence/solr/persister.rb +16 -4
  34. data/lib/valkyrie/persistence/solr/queries/find_by_alternate_identifier_query.rb +1 -1
  35. data/lib/valkyrie/persistence/solr/queries/find_by_id_query.rb +1 -1
  36. data/lib/valkyrie/persistence/solr/repository.rb +17 -7
  37. data/lib/valkyrie/persistence.rb +2 -0
  38. data/lib/valkyrie/rdf_patches.rb +1 -0
  39. data/lib/valkyrie/resource/access_controls.rb +1 -1
  40. data/lib/valkyrie/resource.rb +0 -1
  41. data/lib/valkyrie/specs/shared_specs/change_set_persister.rb +1 -0
  42. data/lib/valkyrie/specs/shared_specs/file.rb +1 -0
  43. data/lib/valkyrie/specs/shared_specs/persister.rb +21 -3
  44. data/lib/valkyrie/specs/shared_specs/queries.rb +11 -0
  45. data/lib/valkyrie/specs/shared_specs/resource.rb +1 -1
  46. data/lib/valkyrie/specs/shared_specs/storage_adapter.rb +19 -0
  47. data/lib/valkyrie/specs/shared_specs/write_only/metadata_adapter.rb +62 -0
  48. data/lib/valkyrie/specs/shared_specs.rb +2 -0
  49. data/lib/valkyrie/storage/disk.rb +25 -2
  50. data/lib/valkyrie/storage/fedora.rb +1 -1
  51. data/lib/valkyrie/storage_adapter.rb +1 -1
  52. data/lib/valkyrie/version.rb +1 -1
  53. data/lib/valkyrie/vocab/pcdm_use.rb +13 -0
  54. data/lib/valkyrie.rb +0 -15
  55. data/valkyrie.gemspec +2 -3
  56. metadata +31 -33
  57. data/lib/config/database_connection.rb +0 -15
  58. data/lib/generators/valkyrie/resource_generator.rb +0 -27
  59. data/lib/generators/valkyrie/templates/resource.rb.erb +0 -8
  60. data/lib/generators/valkyrie/templates/resource_spec.rb.erb +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2d82ceafa985dc327a594ad39da9f4feb343579e6330ae7f30a6fd7894471083
4
- data.tar.gz: 56f54340890de9a799588b47eb4fb3ee6f400d598db03c7bf97d4163d128d831
3
+ metadata.gz: 92a63ed951bdc096d910ffcc3b357f5723607c7014dabe1e7e9e1fd83e33c6aa
4
+ data.tar.gz: 065703d34ed3cc701d72f83fe23a73f56ae504e1f4448db9b35c62c831246049
5
5
  SHA512:
6
- metadata.gz: 2676a955ae6333f4c9b82a4f2a0e131bb235e4cdef8b05951bdfb787ac1218a9e2da410a476928482824b909a12ade0f2d6e2074915c3738922ca4f3a8004337
7
- data.tar.gz: 67a8b919a2ce033240db9d8b507140f84a8c49edfbf7283f205a41a7a09d2ba99940e5c465f0959cc27ce707e52d68b5e2d04a0f67376f482ae560c4713608ee
6
+ metadata.gz: 673a3dd11538cccf8c99de59d303a58ae225bfd672dec42e19c1eb436e5a1112924b49319b72127d1f6cc8c0c555ebb748b2029f3cafb9f81dd5925ac6a3f6b8
7
+ data.tar.gz: 0b3ecfd44279c35865cd42e50ff7d40cc8d983f87cffccc09573f7c8ded1148e19e3855089bb9bdea72708efa528bb91bdd0f877f4c3b9abd33a7dc52f6c8251
data/.circleci/config.yml CHANGED
@@ -28,13 +28,28 @@ jobs:
28
28
  environment:
29
29
  CATALINA_OPTS: "-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
30
30
  JAVA_OPTIONS: "-Djetty.http.port=8998 -Dfcrepo.dynamic.jms.port=61618 -Dfcrepo.dynamic.stomp.port=61614"
31
+ - image: fcrepo/fcrepo:6.0.0
32
+ environment:
33
+ CATALINA_OPTS: "-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
34
+ JAVA_OPTS: "-Djetty.http.port=8978 -Dfcrepo.dynamic.jms.port=61619 -Dfcrepo.dynamic.stomp.port=61615 -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
31
35
  - image: solr:7.7-alpine
32
36
  command: bin/solr -cloud -noprompt -f -p 8994
33
37
  environment:
34
38
  BUNDLE_GEMFILE: << parameters.gemfile >>
35
39
  POSTGRES_PORT: 5432
40
+ FEDORA_6_PORT: 8080
36
41
  steps:
37
42
  - checkout
43
+
44
+ - run:
45
+ name: Check for 'master' branch
46
+ command: |
47
+ git fetch --all --quiet --prune --prune-tags
48
+ if [[ -n "$(git branch --all --list master */master)" ]]; then
49
+ echo "A branch named 'master' was found. Please remove it."
50
+ echo "$(git branch --all --list master */master)"
51
+ fi
52
+ [[ -z "$(git branch --all --list master */master)" ]]
38
53
  - run:
39
54
  name: Wait for solr
40
55
  command: dockerize -wait tcp://localhost:8994 -timeout 1m
@@ -50,7 +65,7 @@ jobs:
50
65
  - restore_cache:
51
66
  keys:
52
67
  - bundle-{{ checksum "<< parameters.gemfile >>" }}-{{ checksum "valkyrie.gemspec" }}-<< parameters.ruby >>-6
53
- - run: sudo apt-get update && sudo apt-get install -y libpq-dev
68
+ - run: sudo apt update -y && sudo apt-get install -y libpq-dev lsof
54
69
  - run:
55
70
  name: Set BUNDLE_GEMFILE
56
71
  command: |
@@ -83,6 +98,18 @@ workflows:
83
98
  gemfile: "gemfiles/activerecord_6_0.gemfile"
84
99
  ruby: 2.7.0
85
100
  name: "Ruby2-7_Rails6-0"
101
+ - build:
102
+ gemfile: "gemfiles/activerecord_7_0.gemfile"
103
+ ruby: 2.7.5
104
+ name: "Ruby2-7_rails7-0"
105
+ - build:
106
+ gemfile: "gemfiles/faraday_1.gemfile"
107
+ ruby: 2.7.0
108
+ name: "Faraday1"
109
+ - build:
110
+ gemfile: "gemfiles/faraday_0.gemfile"
111
+ ruby: 2.7.0
112
+ name: "Faraday0"
86
113
  - build:
87
114
  gemfile: "gemfiles/activerecord_6_0.gemfile"
88
115
  ruby: 2.6.5
@@ -112,6 +139,14 @@ workflows:
112
139
  gemfile: "gemfiles/activerecord_6_0.gemfile"
113
140
  ruby: 2.7.0
114
141
  name: "Ruby2-7_Rails6-0"
142
+ - build:
143
+ gemfile: "gemfiles/faraday_1.gemfile"
144
+ ruby: 2.7.0
145
+ name: "Faraday1"
146
+ - build:
147
+ gemfile: "gemfiles/faraday_0.gemfile"
148
+ ruby: 2.7.0
149
+ name: "Faraday0"
115
150
  - build:
116
151
  gemfile: "gemfiles/activerecord_6_0.gemfile"
117
152
  ruby: 2.6.5
data/.lando.yml CHANGED
@@ -38,3 +38,21 @@ services:
38
38
  ports:
39
39
  - 8998:8080
40
40
  portforward: true
41
+ valkyrie_fedora_6:
42
+ type: compose
43
+ app_mount: false
44
+ volumes:
45
+ fedora6:
46
+ services:
47
+ image: fcrepo/fcrepo:6.0.0
48
+ command:
49
+ - "catalina.sh"
50
+ - "run"
51
+ volumes:
52
+ - fedora6:/data
53
+ ports:
54
+ - 8978:8080
55
+ environment:
56
+ CATALINA_OPTS: "-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
57
+ JAVA_OPTS: "-Dfcrepo.dynamic.jms.port=61619 -Dfcrepo.dynamic.stomp.port=61615 -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
58
+ portforward: true
data/.rubocop.yml CHANGED
@@ -39,3 +39,13 @@ Naming/FileName:
39
39
  Exclude:
40
40
  - 'Appraisals'
41
41
  - 'Gemfile'
42
+ Metrics/MethodLength:
43
+ Exclude:
44
+ - 'lib/valkyrie/persistence/postgres/persister.rb'
45
+ - 'lib/valkyrie/persistence/fedora/persister.rb'
46
+ Metrics/CyclomaticComplexity:
47
+ Exclude:
48
+ - 'lib/valkyrie/persistence/postgres/persister.rb'
49
+ RSpec/VerifiedDoubles:
50
+ Exclude:
51
+ - 'spec/valkyrie/persistence/postgres/metadata_adapter_spec.rb'
data/.tool-versions CHANGED
@@ -1 +1 @@
1
- ruby 2.6.6
1
+ ruby 2.7.5
data/Appraisals CHANGED
@@ -1,4 +1,9 @@
1
1
  # frozen_string_literal: true
2
+
3
+ appraise "activerecord-7-0" do
4
+ gem "activerecord", "~> 7.0.0"
5
+ end
6
+
2
7
  appraise "activerecord-6-0" do
3
8
  gem "activerecord", "~> 6.0.0"
4
9
  end
@@ -6,3 +11,13 @@ end
6
11
  appraise "activerecord-5-2" do
7
12
  gem "activerecord", "~> 5.2.0"
8
13
  end
14
+
15
+ appraise "faraday-0" do
16
+ gem "faraday", "< 1"
17
+ gem "activerecord", "~> 6.0.0"
18
+ end
19
+
20
+ appraise "faraday-1" do
21
+ gem "faraday", "~> 1.0"
22
+ gem "activerecord", "~> 6.0.0"
23
+ end
data/CHANGELOG.md CHANGED
@@ -1,4 +1,64 @@
1
- # v2.1.2 2020-03-12
1
+ # v3.0.0.beta2 2022-06-15
2
+
3
+ ## Changes since last release
4
+
5
+ * Update pcdm_use warning
6
+ [dchandekstark](https://github.com/dchandekstark)
7
+ * Add support for Faraday 2
8
+ [tpendragon](https://github.com/tpendragon)
9
+ * Rails 7 Support
10
+ [cgalarza](https://github.com/cgalarza)
11
+ [tpendragon](https://github.com/tpendragon)
12
+ * Support discovery of multiple disk adapters on different paths.
13
+ [no-reply](https://github.com/tpendragon)
14
+ * New Product Owner: Alexandra Dunn!
15
+ [dunn](https://github.com/dunn)
16
+
17
+ Additional thanks to the following for code review and issue reports leading to
18
+ this release:
19
+
20
+ [cjcolvar](https://github.com/cjcolvar)
21
+
22
+ # v3.0.0.beta1 2021-10-18
23
+
24
+ ## Changes since last release
25
+
26
+ * More informative NoMethodError for missing custom queries.
27
+ [no-reply](https://github.com/no-reply)
28
+ * Persisters error if you save something which existed at query time, but has
29
+ since been deleted.
30
+ * Shared write-only persisters.
31
+ * Solr ModelConverter performance.
32
+ * Don't hold open a file handle from StorageAdapter#upload/find_by
33
+ * Files can be #close'd.
34
+ * Remove Draper
35
+ * Remove deprecated string equality function.
36
+ * Remove deprecated BlacklistedValue.
37
+ * Allow reform upgrade to 2.6.
38
+ * Don't require a specific error message in shared specs
39
+ [tpendragon](https://github.com/tpendragon)
40
+
41
+ Additional thanks to the following for code review and issue reports leading to
42
+ this release:
43
+
44
+ [hackartisan](https://github.com/hackartisan)
45
+ [eliotjordan](https://github.com/eliotjordan)
46
+
47
+
48
+ # v2.2.0 2021-05-06
49
+
50
+ ## Changes since last release
51
+
52
+ * Add support for Fedora 6.
53
+ [tpendragon](https://github.com/tpendragon)
54
+ * Deprecate pcdmuse:PreservationMasterFile in favor of pcdmuse:PreservationFile
55
+ [escowles](https://github.com/escowles)
56
+ * Improve spec docs for resource.rb
57
+ [dchandekstark](https://github.com/dchandekstark)
58
+ * Memoize resource in Solr queries to reduce Solr calls.
59
+ [dchandekstark](https://github.com/dchandekstark)
60
+
61
+ # v2.1.2 2021-04-19
2
62
 
3
63
  ## Changes since last release
4
64
 
@@ -47,9 +107,9 @@ this release:
47
107
  * Use `::` prefixed names for `JSON::LD` references.
48
108
  [no-reply](https://github.com/no-reply)
49
109
  * Use SVG instead of PNG for version badge.
50
- [hackmastera](https://github.com/hackmastera)
110
+ [hackartisan](https://github.com/hackartisan)
51
111
  * Fix Rubocop for latest Bixby.
52
- [hackmastera](https://github.com/hackmastera)
112
+ [hackartisan](https://github.com/hackartisan)
53
113
  * Valkyrie IDs equal string equivalent of ID to String with config
54
114
  [jlevnhv](https://github.com/jlevnhv)
55
115
  * Add optional model parameter to find_inverse_references_by and
@@ -194,7 +254,7 @@ involved for their contributions in the last year:
194
254
  [cjcolvar](https://github.com/cjcolvar)
195
255
  [dgcliff](https://github.com/dgcliff)
196
256
  [escowles](https://github.com/escowles)
197
- [hackmastera](https://github.com/hackmastera)
257
+ [hackartisan](https://github.com/hackartisan)
198
258
  [jeremyf](https://github.com/jeremyf)
199
259
  [jrgriffiniii](https://github.com/jrgriffiniii)
200
260
  [kelynch](https://github.com/kelynch)
@@ -275,17 +335,17 @@ this release:
275
335
  * Provide a warning when postgres adapter overwrites an ID, deprecate this
276
336
  behavior so it will throw an exception in the future.
277
337
  [cam156](https://github.com/cam156)
278
- [hackmastera](https://github.com/hackmastera)
338
+ [hackartisan](https://github.com/hackartisan)
279
339
  [tpendragon](https://github.com/tpendragon)
280
340
  * Add support for passing just an ID to find_inverse_references_by
281
341
  [cam156](https://github.com/cam156)
282
- [hackmastera](https://github.com/hackmastera)
342
+ [hackartisan](https://github.com/hackartisan)
283
343
  * Fix memory adapter raising an exception in find_by_alternate_identifier when
284
344
  there are resources without the alternate_identifier attribute.
285
345
  [jeremyf](https://github.com/jeremyf)
286
346
  * Provide a warning when using the postgres adapter without manually providing
287
347
  the pg gem, so it can be an optional dependency in 2.0.0.
288
- [hackmastera](https://github.com/hackmastera)
348
+ [hackartisan](https://github.com/hackartisan)
289
349
  * Provide guidance in specs on how to define alternate_ids
290
350
  [cjcolvar](https://github.com/cjcolvar)
291
351
  * Upload files to Fedora using form/multipart.
@@ -331,17 +391,17 @@ Additional thanks to the following for code review:
331
391
  * Provide a warning when postgres adapter overwrites an ID, deprecate this
332
392
  behavior so it will throw an exception in the future.
333
393
  [cam156](https://github.com/cam156)
334
- [hackmastera](https://github.com/hackmastera)
394
+ [hackartisan](https://github.com/hackartisan)
335
395
  [tpendragon](https://github.com/tpendragon)
336
396
  * Add support for passing just an ID to find_inverse_references_by
337
397
  [cam156](https://github.com/cam156)
338
- [hackmastera](https://github.com/hackmastera)
398
+ [hackartisan](https://github.com/hackartisan)
339
399
  * Fix memory adapter raising an exception in find_by_alternate_identifier when
340
400
  there are resources without the alternate_identifier attribute.
341
401
  [jeremyf](https://github.com/jeremyf)
342
402
  * Provide a warning when using the postgres adapter without manually providing
343
403
  the pg gem, so it can be an optional dependency in 2.0.0.
344
- [hackmastera](https://github.com/hackmastera)
404
+ [hackartisan](https://github.com/hackartisan)
345
405
  * Provide guidance in specs on how to define alternate_ids
346
406
  [cjcolvar](https://github.com/cjcolvar)
347
407
  * Upload files to Fedora using form/multipart.
@@ -392,7 +452,7 @@ this release:
392
452
  ## Changes since last release
393
453
 
394
454
  * Fix solr persister to pass through exceptions on timeout
395
- [hackmastera](https://github.com/hackmastera)
455
+ [hackartisan](https://github.com/hackartisan)
396
456
  * Fix generated specs to work with shared_specs expectation
397
457
  [revgum](https://github.com/revgum)
398
458
 
@@ -439,7 +499,7 @@ following participants who made it happen:
439
499
  * [cam156](https://github.com/cam156)
440
500
  * [DanCoughlin](https://github.com/DanCoughlin)
441
501
  * [escowles](https://github.com/escowles)
442
- * [hackmastera](https://github.com/hackmastera)
502
+ * [hackartisan](https://github.com/hackartisan)
443
503
  * [jrgriffiniii](https://github.com/jrgriffiniii)
444
504
  * [mtribone](https://github.com/mtribone)
445
505
  * [tpendragon](https://github.com/tpendragon)
@@ -456,7 +516,7 @@ following participants who made it happen:
456
516
  ## Changes since last release
457
517
 
458
518
  * Loosened ActiveRecord restriction to allow upgrading pg gem to 1.0.
459
- [hackmastera](https://github.com/hackmastera)
519
+ [hackartisan](https://github.com/hackartisan)
460
520
 
461
521
  # v1.1.0 2018-05-08
462
522
 
@@ -535,7 +595,7 @@ Initial Release
535
595
  * [dlpierce](https://github.com/dlpierce)
536
596
  * [escowles](https://github.com/escowles)
537
597
  * [geekscruff](https://github.com/geekscruff)
538
- * [hackmastera](https://github.com/hackmastera)
598
+ * [hackartisan](https://github.com/hackartisan)
539
599
  * [jcoyne](https://github.com/jcoyne)
540
600
  * [jeremyf](https://github.com/jeremyf)
541
601
  * [jgondron](https://github.com/jgondron)
data/CONTRIBUTING.md CHANGED
@@ -22,6 +22,28 @@ https://wiki.duraspace.org/display/samvera/Samvera+Community+Intellectual+Proper
22
22
 
23
23
  You should also add yourself to the `CONTRIBUTORS.md` file in the root of the project.
24
24
 
25
+ ## Language
26
+ The language we use matters. Today, tomorrow, and for years to come
27
+ people will read the code we write. They will judge us for our
28
+ design, logic, and the words we use to describe the system.
29
+ Our words should be accessible. Favor descriptive words that give
30
+ meaning while avoiding reinforcing systemic inequities. For example,
31
+ in the Samvera community, we should favor using allowed\_list instead
32
+ of whitelist, denied\_list instead of blacklist, or source/copy
33
+ instead of master/slave.
34
+ We're going to get it wrong, but this is a call to keep working to
35
+ make it right. View our code and the words we choose as a chance to
36
+ have a conversation. A chance to grow an understanding of the systems
37
+ we develop as well as the systems in which we live.
38
+ See [“Blacklists” and “whitelists”: a salutary warning concerning the
39
+ prevalence of racist language in discussions of predatory
40
+ publishing](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6148600/) for
41
+ further details.
42
+
43
+ If you're working on PR for this project, create a feature branch off of `main`.
44
+
45
+ Please ***do not*** create a branch called `master` for this repository or as part of your pull request; the branch will either need to be removed or renamed before it can be considered for inclusion in the code base and history of our repositories.
46
+
25
47
  ## Contribution Tasks
26
48
 
27
49
  * Reporting Issues
@@ -45,10 +67,10 @@ You should also add yourself to the `CONTRIBUTORS.md` file in the root of the pr
45
67
 
46
68
  * Fork the repository on GitHub
47
69
  * 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.
70
+ * This is usually the main branch.
71
+ * To quickly create a topic branch based on main; `git branch fix/main/my_contribution main`
72
+ * Then checkout the new branch with `git checkout fix/main/my_contribution`.
73
+ * Please avoid working directly on the `main` branch.
52
74
  * You may find the [hub suite of commands](https://github.com/defunkt/hub) helpful
53
75
  * Make sure you have added sufficient tests and documentation for your changes.
54
76
  * Test functionality with RSpec; Test features / UI with Capybara.
@@ -109,15 +131,15 @@ You should also add yourself to the `CONTRIBUTORS.md` file in the root of the pr
109
131
  ### Submitting Changes
110
132
 
111
133
  * Read the article ["Using Pull Requests"](https://help.github.com/articles/using-pull-requests) on GitHub.
112
- * Make sure your branch is up to date with its parent branch (i.e. master)
113
- * `git checkout master`
134
+ * Make sure your branch is up to date with its parent branch (i.e. main)
135
+ * `git checkout main`
114
136
  * `git pull --rebase`
115
137
  * `git checkout <your-branch>`
116
- * `git rebase master`
138
+ * `git rebase main`
117
139
  * It is a good idea to run your tests again.
118
140
  * If you've made more than one commit take a moment to consider whether squashing commits together would help improve their logical grouping.
119
141
  * [Detailed Walkthrough of One Pull Request per Commit](http://ndlib.github.io/practices/one-commit-per-pull-request/)
120
- * `git rebase --interactive master` ([See Github help](https://help.github.com/articles/interactive-rebase))
142
+ * `git rebase --interactive main` ([See Github help](https://help.github.com/articles/interactive-rebase))
121
143
  * 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.
122
144
  * Push your changes to a topic branch in your fork of the repository.
123
145
  * Submit a pull request from your fork to the project.
data/README.md CHANGED
@@ -17,7 +17,7 @@ Jump in: [![Slack Status](http://slack.samvera.org/badge.svg)](http://slack.samv
17
17
  ## Primary Contacts
18
18
 
19
19
  ### Product Owner
20
- [Kate Lynch](https://github.com/kelynch)
20
+ [Alexandra Dunn](https://github.com/dunn)
21
21
 
22
22
  ### Technical Lead
23
23
  [Trey Pendragon](https://github.com/tpendragon)
@@ -180,21 +180,6 @@ attribute :authors, Valkyrie::Types::Array.meta(ordered: true)
180
180
  Defining resource attributes is explained in greater detail on the [Using Types Wiki
181
181
  page](https://github.com/samvera/valkyrie/wiki/Using-Types).
182
182
 
183
- #### Work Types Generator
184
-
185
- To create a custom Valkyrie model in your application, you can use the Rails generator. For example, to
186
- generate a model named `FooBar` with an unordered `title` field and an ordered `member_ids` field:
187
-
188
- ```
189
- rails generate valkyrie:resource FooBar title member_ids:array
190
- ```
191
-
192
- You can namespace your model class by including a slash in the model name:
193
-
194
- ```
195
- rails generate valkyrie:resource Foo/Bar title member_ids:array
196
- ```
197
-
198
183
  ### Read and Write Data
199
184
  ```
200
185
  # initialize a metadata adapter
@@ -239,7 +224,7 @@ custom adapters, but your application will still work.
239
224
  Using the shared specs in your own models is described in more detail on the [Shared Specs Wiki
240
225
  page](https://github.com/samvera/valkyrie/wiki/Shared-Specs).
241
226
 
242
- ### Fedora 5 Compatibility
227
+ ### Fedora 5/6 Compatibility
243
228
  When configuring your adapter, include the `fedora_version` parameter in your metadata or storage adapter
244
229
  config. If Fedora requires auth, you can also include that in the URL, e.g.:
245
230
 
@@ -282,3 +267,7 @@ This software has been developed by and is brought to you by the Samvera communi
282
267
  ## Contributing
283
268
 
284
269
  Bug reports and pull requests are welcome on GitHub at https://github.com/samvera/valkyrie/.
270
+
271
+ If you're working on PR for this project, create a feature branch off of `main`.
272
+
273
+ This repository follows the [Samvera Community Code of Conduct](https://samvera.atlassian.net/wiki/spaces/samvera/pages/405212316/Code+of+Conduct) and [language recommendations](https://github.com/samvera/maintenance/blob/master/templates/CONTRIBUTING.md#language). Please ***do not*** create a branch called `master` for this repository or as part of your pull request; the branch will either need to be removed or renamed before it can be considered for inclusion in the code base and history of this repository.
data/Rakefile CHANGED
@@ -2,7 +2,7 @@
2
2
  require "bundler/gem_tasks"
3
3
  require "rspec/core/rake_task"
4
4
  require 'yaml'
5
- require 'config/database_connection'
5
+ require_relative 'spec/support/database_connection.rb'
6
6
  require 'active_record'
7
7
  require 'rubocop/rake_task'
8
8
  load 'tasks/dev.rake'
@@ -32,6 +32,11 @@ namespace :db do
32
32
  task configure_connection: :configuration do
33
33
  DatabaseConnection.connect!(DATABASE_ENV)
34
34
  ActiveRecord::Base.logger = Logger.new STDOUT if @config['logger']
35
+ @config = if ::ActiveRecord::Base.configurations.respond_to?(:configs_for)
36
+ ::ActiveRecord::Base.configurations.configs_for(env_name: DATABASE_ENV.to_s)[0]
37
+ else
38
+ ::ActiveRecord::Base.configurations[DATABASE_ENV.to_s]
39
+ end
35
40
  end
36
41
 
37
42
  desc 'Create the database from db/config.yml for the current DATABASE_ENV'
data/db/config.yml CHANGED
@@ -5,7 +5,7 @@ default: &default
5
5
  pool: <%= Integer(ENV.fetch("DB_POOL", 5)) %>
6
6
  reaping_frequency: <%= Integer(ENV.fetch("DB_REAPING_FREQUENCY", 10)) %>
7
7
  timeout: 5000
8
- host: localhost
8
+ host: 127.0.0.1
9
9
  username: postgres
10
10
  password:
11
11
 
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
-
3
2
  # This file was generated by Appraisal
4
3
 
5
4
  source "https://rubygems.org"
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
-
3
2
  # This file was generated by Appraisal
4
3
 
5
4
  source "https://rubygems.org"
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+ # This file was generated by Appraisal
3
+
4
+ source "https://rubygems.org"
5
+
6
+ gem "activerecord", "~> 7.0.0"
7
+ gem "ldp"
8
+ gem "pg"
9
+ gem "rsolr"
10
+
11
+ gemspec path: "../"
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+ # This file was generated by Appraisal
3
+
4
+ source "https://rubygems.org"
5
+
6
+ gem "activerecord", "~> 6.0.0"
7
+ gem "ldp"
8
+ gem "pg"
9
+ gem "rsolr"
10
+ gem "faraday", "< 1"
11
+
12
+ gemspec path: "../"
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+ # This file was generated by Appraisal
3
+
4
+ source "https://rubygems.org"
5
+
6
+ gem "activerecord", "~> 6.0.0"
7
+ gem "ldp"
8
+ gem "pg"
9
+ gem "rsolr"
10
+ gem "faraday", "~> 1.0"
11
+
12
+ gemspec path: "../"
data/lib/valkyrie/id.rb CHANGED
@@ -25,27 +25,12 @@ module Valkyrie
25
25
  delegate :hash, to: :state
26
26
 
27
27
  def eql?(other)
28
- return string_equality(other) if Valkyrie.config.id_string_equality == true
29
- default_equality(other)
28
+ other == to_str
30
29
  end
31
30
  alias == eql?
32
31
 
33
32
  protected
34
33
 
35
- def default_equality(other)
36
- output = (other.class == self.class && other.state == state)
37
- return output if output == true
38
- if output == false && string_equality(other) && Valkyrie.config.id_string_equality.nil?
39
- warn "[DEPRECATION] Valkyrie::IDs will always be equal to their string counterparts in 3.0.0. " \
40
- "To silence this message, please either compare IDs or set Valkyrie.config.id_string_equality = true."
41
- end
42
- false
43
- end
44
-
45
- def string_equality(other)
46
- other == to_str
47
- end
48
-
49
34
  def state
50
35
  [@id]
51
36
  end
@@ -24,8 +24,8 @@ module Valkyrie::Persistence
24
24
  @buffer_class = buffer_class
25
25
  end
26
26
 
27
- def save(resource:)
28
- persister.save(resource: resource)
27
+ def save(resource:, external_resource: false)
28
+ persister.save(resource: resource, external_resource: external_resource)
29
29
  end
30
30
 
31
31
  def save_all(resources:)
@@ -24,14 +24,14 @@ module Valkyrie::Persistence
24
24
  end
25
25
 
26
26
  # (see Valkyrie::Persistence::Memory::Persister#save)
27
- def save(resource:)
27
+ def save(resource:, external_resource: false)
28
28
  # Assume the first persister is the canonical data store; that's the optlock we want
29
29
  first, *rest = *persisters
30
- cached_resource = first.save(resource: resource)
30
+ cached_resource = first.save(resource: resource, external_resource: external_resource)
31
31
  # Don't pass opt lock tokens to other persisters
32
32
  internal_resource = cached_resource.dup
33
33
  internal_resource.clear_optimistic_lock_token!
34
- rest.inject(internal_resource) { |m, persister| persister.save(resource: m) }
34
+ rest.inject(internal_resource) { |m, persister| persister.save(resource: m, external_resource: true) }
35
35
  # return the one with the desired opt lock token
36
36
  cached_resource
37
37
  end
@@ -39,25 +39,17 @@ module Valkyrie::Persistence
39
39
  attr_reader :query_service, :query_handlers
40
40
  def initialize(query_service:)
41
41
  @query_service = query_service
42
- @query_handlers = []
42
+ @query_handlers = {}
43
43
  end
44
44
 
45
45
  def register_query_handler(query_handler)
46
- @query_handlers << query_handler
47
- end
48
-
49
- def method_missing(meth_name, *args, &block)
50
- query_handler = find_query_handler(meth_name).new(query_service: query_service)
51
- return super unless query_handler
52
- query_handler.__send__(meth_name, *args, &block)
53
- end
54
-
55
- def find_query_handler(method)
56
- query_handlers.find { |x| x.queries.include?(method) }
57
- end
58
-
59
- def respond_to_missing?(meth_name, _args)
60
- find_query_handler(meth_name).present?
46
+ query_handler.queries.each do |query|
47
+ handler = query_handler.new(query_service: query_service)
48
+ query_handlers[query.to_sym] = handler
49
+ define_singleton_method query do |*args, &block|
50
+ query_handlers[query.to_sym].__send__(query, *args, &block)
51
+ end
52
+ end
61
53
  end
62
54
  end
63
55
  end
@@ -58,7 +58,7 @@ module Valkyrie::Persistence::Fedora
58
58
  # @param [RDF::URI] id the Valkyrie ID
59
59
  # @return [RDF::URI]
60
60
  def id_to_uri(id)
61
- prefix = fedora_version == 5 ? "" : "#{pair_path(id)}/"
61
+ prefix = [5, 6].include?(fedora_version) ? "" : "#{pair_path(id)}/"
62
62
  RDF::URI("#{connection_prefix}/#{prefix}#{CGI.escape(id.to_s)}")
63
63
  end
64
64
 
@@ -71,6 +71,10 @@ module Valkyrie::Persistence::Fedora
71
71
  id.to_s.split(/[-\/]/).first.split("").each_slice(2).map(&:join).join("/")
72
72
  end
73
73
 
74
+ def url_prefix
75
+ connection.http.url_prefix
76
+ end
77
+
74
78
  # Generate the prefix used in HTTP requests to the Fedora RESTful endpoint
75
79
  # @return [String]
76
80
  def connection_prefix
@@ -33,12 +33,10 @@ module Valkyrie::Persistence::Fedora
33
33
  # empty, tail.prev is the first element.
34
34
  def tail
35
35
  @tail ||=
36
- begin
37
- if tail_subject
38
- TailSentinel.new(self, prev_node: build_node(tail_subject))
39
- else
40
- head.next
41
- end
36
+ if tail_subject
37
+ TailSentinel.new(self, prev_node: build_node(tail_subject))
38
+ else
39
+ head.next
42
40
  end
43
41
  end
44
42
 
@@ -313,7 +313,6 @@ module Valkyrie::Persistence::Fedora
313
313
  end
314
314
 
315
315
  # Generate a new RDF hash URI for the "child" graph for the ModelConverter::Property
316
- # @see https://github.com/fcrepo4/fcrepo4/blob/master/fcrepo-kernel-modeshape/src/main/java/org/fcrepo/kernel/modeshape/rdf/JcrRdfTools.java#L455
317
316
  # @return [RDF::Graph]
318
317
  def subject_uri
319
318
  @subject_uri ||= ::RDF::URI(RDF::Node.new.to_s.gsub("_:", "#"))