valkyrie 2.1.2 → 3.0.0.pre.beta.2

Sign up to get free protection for your applications and to get access to all the features.
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("_:", "#"))