valkyrie 1.7.1 → 2.0.0.RC1
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/.circleci/config.yml +6 -86
- data/.gitignore +0 -1
- data/.rubocop.yml +0 -5
- data/CHANGELOG.md +1 -160
- data/README.md +62 -84
- data/Rakefile +2 -8
- data/lib/valkyrie.rb +4 -39
- data/lib/valkyrie/id.rb +0 -8
- data/lib/valkyrie/persistence/fedora.rb +3 -7
- data/lib/valkyrie/persistence/fedora/list_node.rb +11 -28
- data/lib/valkyrie/persistence/fedora/metadata_adapter.rb +1 -8
- data/lib/valkyrie/persistence/fedora/permissive_schema.rb +0 -16
- data/lib/valkyrie/persistence/fedora/query_service.rb +6 -8
- data/lib/valkyrie/persistence/memory/metadata_adapter.rb +0 -5
- data/lib/valkyrie/persistence/memory/persister.rb +1 -1
- data/lib/valkyrie/persistence/memory/query_service.rb +6 -11
- data/lib/valkyrie/persistence/postgres.rb +1 -14
- data/lib/valkyrie/persistence/postgres/metadata_adapter.rb +0 -5
- data/lib/valkyrie/persistence/postgres/orm_converter.rb +1 -1
- data/lib/valkyrie/persistence/postgres/persister.rb +1 -9
- data/lib/valkyrie/persistence/postgres/query_service.rb +4 -6
- data/lib/valkyrie/persistence/solr.rb +0 -7
- data/lib/valkyrie/persistence/solr/metadata_adapter.rb +0 -5
- data/lib/valkyrie/persistence/solr/model_converter.rb +2 -11
- data/lib/valkyrie/persistence/solr/orm_converter.rb +2 -2
- data/lib/valkyrie/persistence/solr/queries/find_inverse_references_query.rb +4 -4
- data/lib/valkyrie/persistence/solr/queries/find_members_query.rb +4 -11
- data/lib/valkyrie/persistence/solr/query_service.rb +4 -7
- data/lib/valkyrie/resource.rb +21 -62
- data/lib/valkyrie/specs/shared_specs.rb +0 -5
- data/lib/valkyrie/specs/shared_specs/change_set_persister.rb +9 -9
- data/lib/valkyrie/specs/shared_specs/persister.rb +1 -3
- data/lib/valkyrie/specs/shared_specs/queries.rb +17 -45
- data/lib/valkyrie/specs/shared_specs/resource.rb +6 -11
- data/lib/valkyrie/specs/shared_specs/solr_indexer.rb +3 -3
- data/lib/valkyrie/specs/shared_specs/storage_adapter.rb +4 -17
- data/lib/valkyrie/storage/disk.rb +1 -2
- data/lib/valkyrie/storage/fedora.rb +16 -29
- data/lib/valkyrie/storage/memory.rb +1 -2
- data/lib/valkyrie/types.rb +6 -24
- data/lib/valkyrie/version.rb +1 -1
- data/solr/config/schema.xml +1 -0
- data/tasks/dev.rake +0 -3
- data/tasks/docker.rake +2 -2
- data/valkyrie.gemspec +6 -7
- metadata +49 -62
- data/.tool-versions +0 -1
- data/Appraisals +0 -8
- data/CODE_OF_CONDUCT.md +0 -36
- data/CONTRIBUTING.md +0 -161
- data/SUPPORT.md +0 -5
- data/gemfiles/activerecord_5_1.gemfile +0 -7
- data/gemfiles/activerecord_5_2.gemfile +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a6595012901f53ab2c47eca1f7aca4e02c6de433ab564c026ea23fc4157ae88
|
4
|
+
data.tar.gz: 20ad473091497657070518c0b019a92436db6cc18b829aed53288c876b29a684
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0deef685a04e187a7e8352aad5ff9bb7431617b905d03da8222b3f3591bc472f6cf9188bfd426d2afa221dd5778fed3f120c2e99d4e75d95b1d51fe0f66c9d0e
|
7
|
+
data.tar.gz: 27c8e622b13e742ce3f4a6ec88d0d72daa3f90163ce5aba1658a77c4fb0d825349dec1867d1c8a4b1f8a48350c7d40a0f82fb129aa29e060585142b6456d6c85
|
data/.circleci/config.yml
CHANGED
@@ -1,96 +1,39 @@
|
|
1
1
|
---
|
2
|
-
version: 2
|
2
|
+
version: 2
|
3
3
|
jobs:
|
4
4
|
build:
|
5
5
|
machine: true
|
6
|
-
parameters:
|
7
|
-
gemfile:
|
8
|
-
description: "Gemfile to run"
|
9
|
-
default: "Gemfile"
|
10
|
-
type: "string"
|
11
|
-
ruby:
|
12
|
-
description: "Ruby version"
|
13
|
-
default: "2.6.3"
|
14
|
-
type: "string"
|
15
|
-
environment:
|
16
|
-
BUNDLE_GEMFILE: << parameters.gemfile >>
|
17
6
|
steps:
|
18
7
|
- checkout
|
19
|
-
- run:
|
20
|
-
name: Set ruby version to << parameters.ruby >>
|
21
|
-
command: |
|
22
|
-
rvm install << parameters.ruby >>
|
23
|
-
echo . $(rvm << parameters.ruby >> do rvm env --path) >> $BASH_ENV
|
24
|
-
- run:
|
25
|
-
shell: /bin/bash -l
|
26
|
-
name: Uninstall global Bundler
|
27
|
-
command: |
|
28
|
-
rvm use << parameters.ruby >>
|
29
|
-
rvm gemset use global
|
30
|
-
gem uninstall bundler -x
|
31
|
-
echo Uninstalled
|
32
8
|
- run:
|
33
9
|
name: Install Docker Compose
|
34
10
|
command: |
|
35
11
|
curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
|
36
12
|
chmod +x ~/docker-compose
|
37
13
|
sudo mv ~/docker-compose /usr/local/bin/docker-compose
|
38
|
-
- run:
|
39
|
-
name: Update bundler
|
40
|
-
command: gem install bundler -v 1.17.2
|
41
14
|
- restore_cache:
|
42
15
|
keys:
|
43
|
-
- bundle-{{ checksum "
|
16
|
+
- bundle-{{ checksum "Gemfile" }}-{{ checksum "valkyrie.gemspec" }}
|
17
|
+
- bundle- # used if checksum fails
|
44
18
|
- run: sudo apt-get update && sudo apt-get install -y libpq-dev
|
45
|
-
- run:
|
46
|
-
name: Set BUNDLE_GEMFILE
|
47
|
-
command: |
|
48
|
-
export BUNDLE_GEMFILE=~/project/<< parameters.gemfile >>
|
49
19
|
- run:
|
50
20
|
name: Install dependencies
|
51
21
|
command: bundle install --path=vendor/bundle --jobs 4 --retry 3
|
52
22
|
- save_cache:
|
53
|
-
key: bundle-{{ checksum "
|
23
|
+
key: bundle-{{ checksum "Gemfile" }}-{{ checksum "valkyrie.gemspec" }}
|
54
24
|
paths:
|
55
25
|
- "vendor/bundle"
|
56
|
-
- "gemfiles/vendor/bundle"
|
57
26
|
- run:
|
58
27
|
name: Run Rubocop
|
59
28
|
command: bundle exec rake rubocop
|
60
29
|
- run:
|
61
30
|
name: Run Specs
|
62
31
|
command: bundle exec rake docker:spec
|
63
|
-
- store_artifacts:
|
64
|
-
path: coverage
|
65
|
-
destination: coverage
|
66
32
|
workflows:
|
67
33
|
version: 2
|
68
34
|
build:
|
69
35
|
jobs:
|
70
|
-
- build
|
71
|
-
gemfile: "gemfiles/activerecord_5_2.gemfile"
|
72
|
-
ruby: 2.6.3
|
73
|
-
name: "Ruby2-6_Rails5-2"
|
74
|
-
- build:
|
75
|
-
gemfile: "gemfiles/activerecord_5_1.gemfile"
|
76
|
-
ruby: 2.6.3
|
77
|
-
name: "Ruby2-6_Rails5-1"
|
78
|
-
- build:
|
79
|
-
gemfile: "gemfiles/activerecord_5_2.gemfile"
|
80
|
-
ruby: 2.5.5
|
81
|
-
name: "Ruby2-5_Rails5-2"
|
82
|
-
- build:
|
83
|
-
gemfile: "gemfiles/activerecord_5_1.gemfile"
|
84
|
-
ruby: 2.5.5
|
85
|
-
name: "Ruby2-5_Rails5-1"
|
86
|
-
- build:
|
87
|
-
gemfile: "gemfiles/activerecord_5_2.gemfile"
|
88
|
-
ruby: 2.4.6
|
89
|
-
name: "Ruby2-4_Rails5-2"
|
90
|
-
- build:
|
91
|
-
gemfile: "gemfiles/activerecord_5_1.gemfile"
|
92
|
-
ruby: 2.4.6
|
93
|
-
name: "Ruby2-4_Rails5-1"
|
36
|
+
- build
|
94
37
|
nightly:
|
95
38
|
triggers:
|
96
39
|
- schedule:
|
@@ -100,27 +43,4 @@ workflows:
|
|
100
43
|
only:
|
101
44
|
- master
|
102
45
|
jobs:
|
103
|
-
- build
|
104
|
-
gemfile: "gemfiles/activerecord_5_2.gemfile"
|
105
|
-
ruby: 2.6.3
|
106
|
-
name: "Ruby2-6_Rails5-2"
|
107
|
-
- build:
|
108
|
-
gemfile: "gemfiles/activerecord_5_1.gemfile"
|
109
|
-
ruby: 2.6.3
|
110
|
-
name: "Ruby2-6_Rails5-1"
|
111
|
-
- build:
|
112
|
-
gemfile: "gemfiles/activerecord_5_2.gemfile"
|
113
|
-
ruby: 2.5.5
|
114
|
-
name: "Ruby2-5_Rails5-2"
|
115
|
-
- build:
|
116
|
-
gemfile: "gemfiles/activerecord_5_1.gemfile"
|
117
|
-
ruby: 2.5.5
|
118
|
-
name: "Ruby2-5_Rails5-1"
|
119
|
-
- build:
|
120
|
-
gemfile: "gemfiles/activerecord_5_2.gemfile"
|
121
|
-
ruby: 2.4.6
|
122
|
-
name: "Ruby2-4_Rails5-2"
|
123
|
-
- build:
|
124
|
-
gemfile: "gemfiles/activerecord_5_1.gemfile"
|
125
|
-
ruby: 2.4.6
|
126
|
-
name: "Ruby2-4_Rails5-1"
|
46
|
+
- build
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -9,7 +9,6 @@ AllCops:
|
|
9
9
|
- 'bin/*'
|
10
10
|
- 'db/schema.rb'
|
11
11
|
- 'vendor/**/*'
|
12
|
-
- 'gemfiles/vendor/**/*'
|
13
12
|
RSpec/ScatteredSetup:
|
14
13
|
Enabled: false
|
15
14
|
Metrics/BlockLength:
|
@@ -32,7 +31,3 @@ Naming/PredicateName:
|
|
32
31
|
- "lib/valkyrie/persistence/solr/queries/default_paginator.rb"
|
33
32
|
Lint/UnusedMethodArgument:
|
34
33
|
AllowUnusedKeywordArguments: true
|
35
|
-
Naming/FileName:
|
36
|
-
Exclude:
|
37
|
-
- 'Appraisals'
|
38
|
-
- 'Gemfile'
|
data/CHANGELOG.md
CHANGED
@@ -1,163 +1,4 @@
|
|
1
|
-
# v1.
|
2
|
-
|
3
|
-
## Changes since last release
|
4
|
-
|
5
|
-
* Fix ROOT_PATH error in StorageAdapter#upload shared specs
|
6
|
-
[tpendragon](https://github.com/tpendragon)
|
7
|
-
|
8
|
-
Additional thanks to the following for code review and issue reports leading to
|
9
|
-
this release:
|
10
|
-
|
11
|
-
[escowles](https://github.com/escowles)
|
12
|
-
|
13
|
-
# v1.7.0 2019-05-29
|
14
|
-
|
15
|
-
## Changes since last release
|
16
|
-
|
17
|
-
* Permit storage adapters to have arbitrary arguments to #upload.
|
18
|
-
[jrgriffiniii](https://github.com/jrgriffiniii)
|
19
|
-
* Storage adapters can now all upload regular IO objects.
|
20
|
-
[tpendragon](https://github.com/tpendragon)
|
21
|
-
* Fedora Storage Adapter has a configurable `resource_uri_transformer` for going
|
22
|
-
from a `Resource` to a Fedora path.
|
23
|
-
[elrayle](https://github.com/elrayle)
|
24
|
-
* Improve Gem metadata and allow Bundler 2
|
25
|
-
[jcoyne](https://github.com/jcoyne)
|
26
|
-
|
27
|
-
# v1.6.0 2019-04-17
|
28
|
-
|
29
|
-
## Changes since last release
|
30
|
-
|
31
|
-
* Deprecation in preparation for LDP to be optional
|
32
|
-
* Deprecation in preparation for RSolr to be optional
|
33
|
-
* Deprecation in preparation for ActiveRecord to be optional
|
34
|
-
* Remove Rails requirement
|
35
|
-
* Remove ActiveTriples dependency.
|
36
|
-
|
37
|
-
Additional thanks to the following for code review and issue reports leading to
|
38
|
-
this release:
|
39
|
-
|
40
|
-
[carolyncole](https://github.com/carolyncole)
|
41
|
-
[dgcliff](https://github.com/dgcliff)
|
42
|
-
[escowles](https://github.com/escowles)
|
43
|
-
[no-reply](https://github.com/no-reply)
|
44
|
-
|
45
|
-
# v1.5.1 2019-02-08
|
46
|
-
|
47
|
-
## Changes since last release
|
48
|
-
|
49
|
-
* Namespace shared-spec resources to avoid conflict in apps.
|
50
|
-
[tpendragon](https://github.com/tpendragon)
|
51
|
-
|
52
|
-
Additional thanks to the following for code review and issue reports leading to
|
53
|
-
this release:
|
54
|
-
|
55
|
-
[cjcolvar](https://github.com/cjcolvar)
|
56
|
-
[escowles](https://github.com/escowles)
|
57
|
-
|
58
|
-
# v1.5.0 2019-02-06
|
59
|
-
|
60
|
-
## Changes since last release
|
61
|
-
|
62
|
-
* Fix solr casting when an updated_at key isn't present in the solr document.
|
63
|
-
[tpendragon](https://github.com/tpendragon)
|
64
|
-
* Add missing query service requirement to persister shared specs
|
65
|
-
[cjcolvar](https://github.com/cjcolvar)
|
66
|
-
* Provide a warning when postgres adapter overwrites an ID, deprecate this
|
67
|
-
behavior so it will throw an exception in the future.
|
68
|
-
[cam156](https://github.com/cam156)
|
69
|
-
[hackmastera](https://github.com/hackmastera)
|
70
|
-
[tpendragon](https://github.com/tpendragon)
|
71
|
-
* Add support for passing just an ID to find_inverse_references_by
|
72
|
-
[cam156](https://github.com/cam156)
|
73
|
-
[hackmastera](https://github.com/hackmastera)
|
74
|
-
* Fix memory adapter raising an exception in find_by_alternate_identifier when
|
75
|
-
there are resources without the alternate_identifier attribute.
|
76
|
-
[jeremyf](https://github.com/jeremyf)
|
77
|
-
* Provide a warning when using the postgres adapter without manually providing
|
78
|
-
the pg gem, so it can be an optional dependency in 2.0.0.
|
79
|
-
[hackmastera](https://github.com/hackmastera)
|
80
|
-
* Provide guidance in specs on how to define alternate_ids
|
81
|
-
[cjcolvar](https://github.com/cjcolvar)
|
82
|
-
* Upload files to Fedora using form/multipart.
|
83
|
-
[tpendragon](https://github.com/tpendragon)
|
84
|
-
* Improve CompositePersister documentation.
|
85
|
-
[tpendragon](https://github.com/tpendragon)
|
86
|
-
* Add a Valkyrie::Types::Params::ID type which handles when an HTML form passes
|
87
|
-
an empty string value.
|
88
|
-
[tpendragon](https://github.com/tpendragon)
|
89
|
-
* Deprecate .member on Valkyrie::Types::Array & Set
|
90
|
-
[tpendragon](https://github.com/tpendragon)
|
91
|
-
* Fix updated_at not being set correctly for the Solr adapter, fix shared specs.
|
92
|
-
[tpendragon](https://github.com/tpendragon)
|
93
|
-
|
94
|
-
Additional thanks to the following for code review and issue reports leading to
|
95
|
-
this release:
|
96
|
-
|
97
|
-
[awead](https://github.com/awead)
|
98
|
-
[escowles](https://github.com/escowles)
|
99
|
-
[kelynch](https://github.com/kelynch)
|
100
|
-
[mbklein](https://github.com/mbklein)
|
101
|
-
[mjgiarlo](https://github.com/mjgiarlo)
|
102
|
-
[no-reply](https://github.com/no-reply)
|
103
|
-
[revgum](https://github.com/revgum)
|
104
|
-
|
105
|
-
# v1.5.0 RC2 2019-02-01
|
106
|
-
|
107
|
-
## Changes since last release
|
108
|
-
|
109
|
-
* Fix solr casting when an updated_at key isn't present in the solr document.
|
110
|
-
[tpendragon](https://github.com/tpendragon)
|
111
|
-
|
112
|
-
Additional thanks to the following for code review:
|
113
|
-
|
114
|
-
[mjgiarlo](https://github.com/mjgiarlo)
|
115
|
-
|
116
|
-
# v1.5.0 RC1 2019-02-01
|
117
|
-
|
118
|
-
## Changes since last release
|
119
|
-
|
120
|
-
* Add missing query service requirement to persister shared specs
|
121
|
-
[cjcolvar](https://github.com/cjcolvar)
|
122
|
-
* Provide a warning when postgres adapter overwrites an ID, deprecate this
|
123
|
-
behavior so it will throw an exception in the future.
|
124
|
-
[cam156](https://github.com/cam156)
|
125
|
-
[hackmastera](https://github.com/hackmastera)
|
126
|
-
[tpendragon](https://github.com/tpendragon)
|
127
|
-
* Add support for passing just an ID to find_inverse_references_by
|
128
|
-
[cam156](https://github.com/cam156)
|
129
|
-
[hackmastera](https://github.com/hackmastera)
|
130
|
-
* Fix memory adapter raising an exception in find_by_alternate_identifier when
|
131
|
-
there are resources without the alternate_identifier attribute.
|
132
|
-
[jeremyf](https://github.com/jeremyf)
|
133
|
-
* Provide a warning when using the postgres adapter without manually providing
|
134
|
-
the pg gem, so it can be an optional dependency in 2.0.0.
|
135
|
-
[hackmastera](https://github.com/hackmastera)
|
136
|
-
* Provide guidance in specs on how to define alternate_ids
|
137
|
-
[cjcolvar](https://github.com/cjcolvar)
|
138
|
-
* Upload files to Fedora using form/multipart.
|
139
|
-
[tpendragon](https://github.com/tpendragon)
|
140
|
-
* Improve CompositePersister documentation.
|
141
|
-
[tpendragon](https://github.com/tpendragon)
|
142
|
-
* Add a Valkyrie::Types::Params::ID type which handles when an HTML form passes
|
143
|
-
an empty string value.
|
144
|
-
[tpendragon](https://github.com/tpendragon)
|
145
|
-
* Deprecate .member on Valkyrie::Types::Array & Set
|
146
|
-
[tpendragon](https://github.com/tpendragon)
|
147
|
-
* Fix updated_at not being set correctly for the Solr adapter, fix shared specs.
|
148
|
-
[tpendragon](https://github.com/tpendragon)
|
149
|
-
|
150
|
-
Additional thanks to the following for code review and issue reports leading to
|
151
|
-
this release:
|
152
|
-
|
153
|
-
[awead](https://github.com/awead)
|
154
|
-
[escowles](https://github.com/escowles)
|
155
|
-
[kelynch](https://github.com/kelynch)
|
156
|
-
[mbklein](https://github.com/mbklein)
|
157
|
-
[no-reply](https://github.com/no-reply)
|
158
|
-
[revgum](https://github.com/revgum)
|
159
|
-
|
160
|
-
# v1.4.0 2019-01-08
|
1
|
+
# v1.4.0 2018-01-08
|
161
2
|
|
162
3
|
## Changes since last release.
|
163
4
|
|
data/README.md
CHANGED
@@ -4,29 +4,22 @@ Valkyrie is a gem for enabling multiple backends for storage of files and metada
|
|
4
4
|
|
5
5
|

|
6
6
|
|
7
|
-
|
8
|
-
[](./CONTRIBUTING.md)
|
12
|
-
[](./LICENSE)
|
13
|
-
[](http://rubydoc.info/gems/valkyrie)
|
14
|
-
|
15
|
-
Jump in: [](http://slack.samvera.org/)
|
7
|
+
[](https://circleci.com/gh/samvera-labs/valkyrie)
|
8
|
+
[](https://coveralls.io/github/samvera-labs/valkyrie?branch=master)
|
9
|
+
[](https://waffle.io/samvera-labs/valkyrie)
|
10
|
+
[](http://rubydoc.info/github/samvera-labs/valkyrie)
|
16
11
|
|
17
12
|
## Primary Contacts
|
18
13
|
|
19
14
|
### Product Owner
|
20
|
-
[Katherine Lynch](https://github.com/kelynch)
|
21
15
|
|
22
|
-
|
23
|
-
[Trey Pendragon](https://github.com/tpendragon)
|
16
|
+
[Carolyn Cole](https://github.com/cam156)
|
24
17
|
|
25
|
-
|
18
|
+
### Technical Lead
|
26
19
|
|
27
|
-
|
20
|
+
[Trey Pendragon](https://github.com/tpendragon)
|
28
21
|
|
29
|
-
##
|
22
|
+
## Installation
|
30
23
|
|
31
24
|
Add this line to your application's Gemfile:
|
32
25
|
|
@@ -44,6 +37,7 @@ Valkyrie is configured in two places: an initializer that registers the persiste
|
|
44
37
|
configuration file that sets which options are used by default in which environments.
|
45
38
|
|
46
39
|
### Sample initializer: `config/initializers/valkyrie.rb`:
|
40
|
+
|
47
41
|
Here is a sample initializer that registers a couple adapters and storage adapters, in each case linking an
|
48
42
|
instance with a short name that can be used to refer to it in your application:
|
49
43
|
|
@@ -87,8 +81,7 @@ The initializer registers two `Valkyrie::MetadataAdapter` instances for storing
|
|
87
81
|
|
88
82
|
Other adapter options include `Valkyrie::Persistence::BufferedPersister` for buffering in memory before bulk
|
89
83
|
updating another persister, `Valkyrie::Persistence::CompositePersister` for storing in more than one adapter
|
90
|
-
at once, `Valkyrie::Persistence::Solr` for storing in Solr, and `Valkyrie::Persistence::Fedora` for storing
|
91
|
-
in Fedora.
|
84
|
+
at once, `Valkyrie::Persistence::Solr` for storing in Solr, and `Valkyrie::Persistence::Fedora` for storing in Fedora.
|
92
85
|
|
93
86
|
The initializer also registers three `Valkyrie::StorageAdapter` instances for storing files:
|
94
87
|
* `:disk` which stores files on disk
|
@@ -96,17 +89,8 @@ The initializer also registers three `Valkyrie::StorageAdapter` instances for st
|
|
96
89
|
* `:memory` which stores files in an in-memory cache (again, not persistent, so this is only appropriate for
|
97
90
|
testing)
|
98
91
|
|
99
|
-
### Sample configuration with custom `Valkyrie.config.resource_class_resolver`:
|
100
|
-
```
|
101
|
-
require 'valkyrie'
|
102
|
-
Rails.application.config.to_prepare do
|
103
|
-
Valkyrie.config.resource_class_resolver = lambda do |resource_klass_name|
|
104
|
-
# Do complicated lookup based on the string
|
105
|
-
end
|
106
|
-
end
|
107
|
-
```
|
108
|
-
|
109
92
|
### Sample configuration: `config/valkyrie.yml`:
|
93
|
+
|
110
94
|
A sample configuration file that configures your application to use different adapters:
|
111
95
|
|
112
96
|
```
|
@@ -129,12 +113,26 @@ For each environment, you must set two values:
|
|
129
113
|
|
130
114
|
The values are the short names used in your initializer.
|
131
115
|
|
132
|
-
Further details can be found on the [
|
133
|
-
page](https://github.com/samvera/valkyrie/wiki/Persistence).
|
116
|
+
Further details can be found on the [the Wiki](https://github.com/samvera-labs/valkyrie/wiki/Persistence).
|
134
117
|
|
135
118
|
## Usage
|
136
119
|
|
120
|
+
### The Public API
|
121
|
+
|
122
|
+
Valkyrie's public API is defined by the shared specs that are used to test each of its core classes.
|
123
|
+
This include change sets, resources, persisters, adapters, and queries. When creating your own kinds of
|
124
|
+
these kinds of classes, you should use these shared specs to test your classes for conformance to
|
125
|
+
Valkyrie's API.
|
126
|
+
|
127
|
+
When breaking changes are introduced, necessitating a major version change, the shared specs will reflect
|
128
|
+
this. When new features are added and a minor version is released there will be no change to the existing shared
|
129
|
+
specs, but there may be new ones. These new shared specs will fail in your
|
130
|
+
application if you have custom adapters, but your application will still work.
|
131
|
+
|
132
|
+
Using the shared specs in your own models is described in more [detail](https://github.com/samvera-labs/valkyrie/wiki/Shared-Specs).
|
133
|
+
|
137
134
|
### Define a Custom Work
|
135
|
+
|
138
136
|
Define a custom work class:
|
139
137
|
|
140
138
|
```
|
@@ -153,8 +151,7 @@ order of multiple values.
|
|
153
151
|
attribute :authors, Valkyrie::Types::Array.meta(ordered: true)
|
154
152
|
```
|
155
153
|
|
156
|
-
Defining resource attributes is explained in greater detail
|
157
|
-
page](https://github.com/samvera/valkyrie/wiki/Using-Types).
|
154
|
+
Defining resource attributes is explained in greater detail within the [Wiki](https://github.com/samvera-labs/valkyrie/wiki/Using-Types).
|
158
155
|
|
159
156
|
#### Work Types Generator
|
160
157
|
|
@@ -172,6 +169,7 @@ rails generate valkyrie:resource Foo/Bar title member_ids:array
|
|
172
169
|
```
|
173
170
|
|
174
171
|
### Read and Write Data
|
172
|
+
|
175
173
|
```
|
176
174
|
# initialize a metadata adapter
|
177
175
|
adapter = Valkyrie::MetadataAdapter.find(:postgres)
|
@@ -190,64 +188,44 @@ objects = adapter.query_service.find_all
|
|
190
188
|
Valkyrie.config.metadata_adapter.query_service.find_all_of_model(model: MyModel)
|
191
189
|
```
|
192
190
|
|
193
|
-
The
|
194
|
-
[Persistence](https://github.com/samvera/valkyrie/wiki/Persistence), and
|
195
|
-
[ChangeSets and Dirty Tracking](https://github.com/samvera/valkyrie/wiki/ChangeSets-and-Dirty-Tracking).
|
196
|
-
|
197
|
-
### Concurrency Support
|
198
|
-
A Valkyrie repository may have concurrent updates, for example, from a load-balanced Rails application, or
|
199
|
-
from multiple [Sidekiq](https://github.com/mperham/sidekiq) background workers). In order to prevent multiple
|
200
|
-
simultaneous updates applied to the same resource from losing or corrupting data, Valkyrie supports optimistic
|
201
|
-
locking. How to use optimistic locking with Valkyrie is documented on the [Optimistic Locking Wiki
|
202
|
-
page](https://github.com/samvera/valkyrie/wiki/Optimistic-Locking).
|
203
|
-
|
204
|
-
### The Public API
|
205
|
-
Valkyrie's public API is defined by the shared specs that are used to test each of its core classes.
|
206
|
-
This include change sets, resources, persisters, adapters, and queries. When creating your own kinds of
|
207
|
-
these kinds of classes, you should use these shared specs to test your classes for conformance to
|
208
|
-
Valkyrie's API.
|
191
|
+
The usage of `ChangeSets` in writing data are further documented [here](https://github.com/samvera-labs/valkyrie/wiki/ChangeSets-and-Dirty-Tracking).
|
209
192
|
|
210
|
-
|
211
|
-
|
212
|
-
shared specs, but there may be new ones. These new shared specs will fail in your application if you have
|
213
|
-
custom adapters, but your application will still work.
|
193
|
+
### Concurrency Support (Optimistic Locking)
|
194
|
+
By default, it is assumed that a Valkyrie repository implementation shall use a solution supporting concurrent updates for resources (multiple resources can be updated simultaneously using a Gem such as [Sidekiq](https://github.com/mperham/sidekiq)). In order to handle the possibility of multiple updates applied to the same resource corrupting data, Valkyrie supports optimistic locking. For further details, please reference the [overview of optimistic locking for Valkyrie resources](https://github.com/samvera-labs/valkyrie/wiki/Optimistic-Locking).
|
214
195
|
|
215
|
-
|
216
|
-
page](https://github.com/samvera/valkyrie/wiki/Shared-Specs).
|
196
|
+
## Installing a Development environment
|
217
197
|
|
218
|
-
###
|
219
|
-
When configuring your adapter, include the `fedora_version` parameter in your metadata or storage adapter
|
220
|
-
config. If Fedora requires auth, you can also include that in the URL, e.g.:
|
198
|
+
### Without Docker
|
221
199
|
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
)
|
227
|
-
```
|
200
|
+
#### External Requirements
|
201
|
+
* PostgreSQL with the uuid-ossp extension.
|
202
|
+
* Note: Enabling uuid-ossp requires database superuser privileges.
|
203
|
+
* From `psql`: `alter user [username] with superuser;`
|
228
204
|
|
229
|
-
|
205
|
+
#### To run the test suite
|
206
|
+
1. Start Solr and Fedora servers for testing with `rake server:test`
|
207
|
+
1. Run `rake db:create` (First time only)
|
208
|
+
1. Run `rake db:migrate`
|
230
209
|
|
231
210
|
### With Docker
|
232
|
-
The development and test stacks use fully contained virtual volumes and bind all services to different ports,
|
233
|
-
so they can be running at the same time without issue.
|
234
211
|
|
235
212
|
#### External Requirements
|
236
213
|
* [Docker](https://store.docker.com/search?offering=community&type=edition) version >= 17.09.0
|
237
|
-
|
214
|
+
*
|
238
215
|
### Dependency Setup (Mac OSX)
|
216
|
+
|
239
217
|
1. `brew install docker`
|
240
218
|
1. `brew install docker-machine`
|
241
219
|
1. `brew install docker-compose`
|
242
220
|
|
243
221
|
### Starting Docker (Mac OSX)
|
222
|
+
|
244
223
|
1. `docker-machine create default`
|
245
224
|
1. `docker-machine start default`
|
246
225
|
1. `eval "$(docker-machine env)"`
|
247
226
|
|
248
227
|
#### Starting the development mode dependencies
|
249
|
-
1. Start Solr, Fedora, and PostgreSQL with `rake docker:dev:daemon` (or `rake docker:dev:up` in a separate
|
250
|
-
shell to run them in the foreground)
|
228
|
+
1. Start Solr, Fedora, and PostgreSQL with `rake docker:dev:daemon` (or `rake docker:dev:up` in a separate shell to run them in the foreground)
|
251
229
|
1. Run `rake db:create db:migrate` to initialize the database
|
252
230
|
1. Develop!
|
253
231
|
1. Run `rake docker:dev:down` to stop the server stack
|
@@ -257,32 +235,32 @@ so they can be running at the same time without issue.
|
|
257
235
|
1. `rake docker:spec`
|
258
236
|
|
259
237
|
#### To run the test suite manually
|
260
|
-
1. Start Solr, Fedora, and PostgreSQL with `rake docker:test:daemon` (or `rake docker:test:up` in a separate
|
261
|
-
shell to run them in the foreground)
|
238
|
+
1. Start Solr, Fedora, and PostgreSQL with `rake docker:test:daemon` (or `rake docker:test:up` in a separate shell to run them in the foreground)
|
262
239
|
1. Run `rake db:create db:migrate` to initialize the database
|
263
240
|
1. Run the gem's RSpec test suite with `rspec spec` or `rake`
|
264
241
|
1. Run `rake docker:test:down` to stop the server stack
|
265
242
|
* The test stack cleans up after itself on exit.
|
266
243
|
|
267
|
-
|
244
|
+
## Fedora 5 Compatibility
|
245
|
+
When configuring your adapter, include the `fedora_version` parameter in your metadata or storage adapter config. If Fedora requires auth, you can also include that in the URL, e.g.:
|
246
|
+
```
|
247
|
+
Valkyrie::Storage::Fedora.new(connection: Ldp::Client.new("http://fedoraAdmin:fedoraAdmin@localhost:8988/rest"), fedora_version: 5)
|
248
|
+
```
|
268
249
|
|
269
|
-
|
270
|
-
* PostgreSQL with the uuid-ossp extension.
|
271
|
-
* Note: Enabling uuid-ossp requires database superuser privileges.
|
272
|
-
* From `psql`: `alter user [username] with superuser;`
|
250
|
+
The development and test stacks use fully contained virtual volumes and bind all services to different ports, so they can be running at the same time without issue.
|
273
251
|
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
252
|
+
## Get Help
|
253
|
+
|
254
|
+
If you have any questions regarding Valkyrie you can send a message to [the
|
255
|
+
Samvera community tech list](mailto:samvera-tech@googlegroups.com) or the `#valkyrie`
|
256
|
+
channel in the [Samvera community Slack
|
257
|
+
team](https://wiki.duraspace.org/pages/viewpage.action?pageId=87460391#Getintouch!-Slack).
|
278
258
|
|
279
|
-
##
|
259
|
+
## License
|
280
260
|
|
281
|
-
|
282
|
-
[Samvera website](http://samvera.org/).
|
261
|
+
Valkyrie is available under [the Apache 2.0 license](../LICENSE).
|
283
262
|
|
284
|
-

|
285
263
|
|
286
264
|
## Contributing
|
287
265
|
|
288
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/samvera/valkyrie/.
|
266
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/samvera-labs/valkyrie/.
|