valkyrie 2.0.0.RC3 → 2.0.0.RC4
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 +84 -7
- data/.gitignore +1 -0
- data/.rubocop.yml +5 -0
- data/.tool-versions +1 -0
- data/Appraisals +8 -0
- data/CHANGELOG.md +31 -0
- data/Gemfile +3 -0
- data/README.md +32 -13
- data/Rakefile +8 -2
- data/gemfiles/activerecord_5_1.gemfile +10 -0
- data/gemfiles/activerecord_5_2.gemfile +10 -0
- data/lib/valkyrie/persistence/fedora/list_node.rb +28 -11
- data/lib/valkyrie/persistence/fedora.rb +9 -2
- data/lib/valkyrie/persistence/postgres.rb +4 -0
- data/lib/valkyrie/persistence/solr.rb +10 -0
- data/lib/valkyrie/resource.rb +3 -7
- data/lib/valkyrie/specs/shared_specs/change_set_persister.rb +9 -9
- data/lib/valkyrie/specs/shared_specs/queries.rb +17 -17
- data/lib/valkyrie/specs/shared_specs/resource.rb +3 -3
- data/lib/valkyrie/specs/shared_specs/solr_indexer.rb +3 -3
- data/lib/valkyrie/specs/shared_specs/storage_adapter.rb +3 -3
- data/lib/valkyrie/specs/shared_specs.rb +5 -0
- data/lib/valkyrie/version.rb +1 -1
- data/lib/valkyrie.rb +6 -3
- data/solr/config/schema.xml +0 -1
- data/tasks/dev.rake +3 -0
- data/tasks/docker.rake +2 -2
- data/valkyrie.gemspec +2 -6
- metadata +14 -66
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9151d2366b77d6dd72a8303e9e33cea7b9b5204e6eaa6decbfd112242632317
|
4
|
+
data.tar.gz: 6dd48e9383552796429bec2e2d1e1968f0566478eb9398292407dcc48d3e9739
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63e754028fe8545504a5788b5f6415d7d9a132296b71d6235146977c1941705f6497a0ea4d9040920a995e43aa66acd6e6ee32cfdddf9662c97a08ff64b420b2
|
7
|
+
data.tar.gz: 34a16fa89f9a969cf42b6f9f55acf3f0e171b62996971234ce93e2a31ba028a42421d3a6bae4b54cb43bf9fb0f5b470f087ea79c35e1ec51adcfedb96ff3ce06
|
data/.circleci/config.yml
CHANGED
@@ -1,10 +1,34 @@
|
|
1
1
|
---
|
2
|
-
version: 2
|
2
|
+
version: 2.1
|
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.2"
|
14
|
+
type: "string"
|
15
|
+
environment:
|
16
|
+
BUNDLE_GEMFILE: << parameters.gemfile >>
|
6
17
|
steps:
|
7
18
|
- 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
|
8
32
|
- run:
|
9
33
|
name: Install Docker Compose
|
10
34
|
command: |
|
@@ -13,30 +37,60 @@ jobs:
|
|
13
37
|
sudo mv ~/docker-compose /usr/local/bin/docker-compose
|
14
38
|
- run:
|
15
39
|
name: Update bundler
|
16
|
-
command: gem install bundler -v 1.
|
40
|
+
command: gem install bundler -v 1.17.2
|
17
41
|
- restore_cache:
|
18
42
|
keys:
|
19
|
-
- bundle-{{ checksum "
|
20
|
-
- bundle- # used if checksum fails
|
43
|
+
- bundle-{{ checksum "<< parameters.gemfile >>" }}-{{ checksum "valkyrie.gemspec" }}-<< parameters.ruby >>-6
|
21
44
|
- 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 >>
|
22
49
|
- run:
|
23
50
|
name: Install dependencies
|
24
51
|
command: bundle install --path=vendor/bundle --jobs 4 --retry 3
|
25
52
|
- save_cache:
|
26
|
-
key: bundle-{{ checksum "
|
53
|
+
key: bundle-{{ checksum "<< parameters.gemfile >>" }}-{{ checksum "valkyrie.gemspec" }}-<< parameters.ruby >>-6
|
27
54
|
paths:
|
28
55
|
- "vendor/bundle"
|
56
|
+
- "gemfiles/vendor/bundle"
|
29
57
|
- run:
|
30
58
|
name: Run Rubocop
|
31
59
|
command: bundle exec rake rubocop
|
32
60
|
- run:
|
33
61
|
name: Run Specs
|
34
62
|
command: bundle exec rake docker:spec
|
63
|
+
- store_artifacts:
|
64
|
+
path: coverage
|
65
|
+
destination: coverage
|
35
66
|
workflows:
|
36
67
|
version: 2
|
37
68
|
build:
|
38
69
|
jobs:
|
39
|
-
- build
|
70
|
+
- build:
|
71
|
+
gemfile: "gemfiles/activerecord_5_2.gemfile"
|
72
|
+
ruby: 2.6.2
|
73
|
+
name: "Ruby2-6_Rails5-2"
|
74
|
+
- build:
|
75
|
+
gemfile: "gemfiles/activerecord_5_1.gemfile"
|
76
|
+
ruby: 2.6.2
|
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.5
|
89
|
+
name: "Ruby2-4_Rails5-2"
|
90
|
+
- build:
|
91
|
+
gemfile: "gemfiles/activerecord_5_1.gemfile"
|
92
|
+
ruby: 2.4.5
|
93
|
+
name: "Ruby2-4_Rails5-1"
|
40
94
|
nightly:
|
41
95
|
triggers:
|
42
96
|
- schedule:
|
@@ -46,4 +100,27 @@ workflows:
|
|
46
100
|
only:
|
47
101
|
- master
|
48
102
|
jobs:
|
49
|
-
- build
|
103
|
+
- build:
|
104
|
+
gemfile: "gemfiles/activerecord_5_2.gemfile"
|
105
|
+
ruby: 2.6.2
|
106
|
+
name: "Ruby2-6_Rails5-2"
|
107
|
+
- build:
|
108
|
+
gemfile: "gemfiles/activerecord_5_1.gemfile"
|
109
|
+
ruby: 2.6.2
|
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.5
|
122
|
+
name: "Ruby2-4_Rails5-2"
|
123
|
+
- build:
|
124
|
+
gemfile: "gemfiles/activerecord_5_1.gemfile"
|
125
|
+
ruby: 2.4.5
|
126
|
+
name: "Ruby2-4_Rails5-1"
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -9,6 +9,7 @@ AllCops:
|
|
9
9
|
- 'bin/*'
|
10
10
|
- 'db/schema.rb'
|
11
11
|
- 'vendor/**/*'
|
12
|
+
- 'gemfiles/vendor/**/*'
|
12
13
|
RSpec/ScatteredSetup:
|
13
14
|
Enabled: false
|
14
15
|
Metrics/BlockLength:
|
@@ -31,3 +32,7 @@ Naming/PredicateName:
|
|
31
32
|
- "lib/valkyrie/persistence/solr/queries/default_paginator.rb"
|
32
33
|
Lint/UnusedMethodArgument:
|
33
34
|
AllowUnusedKeywordArguments: true
|
35
|
+
Naming/FileName:
|
36
|
+
Exclude:
|
37
|
+
- 'Appraisals'
|
38
|
+
- 'Gemfile'
|
data/.tool-versions
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby 2.5.1
|
data/Appraisals
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,34 @@
|
|
1
|
+
# v1.6.0 2018-04-17
|
2
|
+
|
3
|
+
## Changes since last release
|
4
|
+
|
5
|
+
* Deprecation in preparation for LDP to be optional
|
6
|
+
* Deprecation in preparation for RSolr to be optional
|
7
|
+
* Deprecation in preparation for ActiveRecord to be optional
|
8
|
+
* Remove Rails requirement
|
9
|
+
* Remove ActiveTriples dependency.
|
10
|
+
|
11
|
+
Additional thanks to the following for code review and issue reports leading to
|
12
|
+
this release:
|
13
|
+
|
14
|
+
[carolyncole](https://github.com/carolyncole)
|
15
|
+
[dgcliff](https://github.com/dgcliff)
|
16
|
+
[escowles](https://github.com/escowles)
|
17
|
+
[no-reply](https://github.com/no-reply)
|
18
|
+
|
19
|
+
# v1.5.1 2018-02-08
|
20
|
+
|
21
|
+
## Changes since last release
|
22
|
+
|
23
|
+
* Namespace shared-spec resources to avoid conflict in apps.
|
24
|
+
[tpendragon](https://github.com/tpendragon)
|
25
|
+
|
26
|
+
Additional thanks to the following for code review and issue reports leading to
|
27
|
+
this release:
|
28
|
+
|
29
|
+
[cjcolvar](https://github.com/cjcolvar)
|
30
|
+
[escowles](https://github.com/escowles)
|
31
|
+
|
1
32
|
# v1.5.0 2018-02-06
|
2
33
|
|
3
34
|
## Changes since last release
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -5,13 +5,12 @@ Valkyrie is a gem for enabling multiple backends for storage of files and metada
|
|
5
5
|

|
6
6
|
|
7
7
|
Code: [](http://badge.fury.io/rb/valkyrie)
|
8
|
-
[](https://waffle.io/samvera-labs/valkyrie)
|
8
|
+
[](https://circleci.com/gh/samvera/valkyrie)
|
9
|
+

|
11
10
|
|
12
11
|
Docs: [](./CONTRIBUTING.md)
|
13
12
|
[](./LICENSE)
|
14
|
-
[](http://rubydoc.info/
|
13
|
+
[](http://rubydoc.info/gems/valkyrie)
|
15
14
|
|
16
15
|
Jump in: [](http://slack.samvera.org/)
|
17
16
|
|
@@ -62,6 +61,24 @@ Rails.application.config.to_prepare do
|
|
62
61
|
:postgres
|
63
62
|
)
|
64
63
|
|
64
|
+
# To use the solr adapter you must add gem 'rsolr' to your Gemfile
|
65
|
+
Valkyrie::MetadataAdapter.register(
|
66
|
+
Valkyrie::Persistence::Solr::MetadataAdapter.new(
|
67
|
+
connection: Blacklight.default_index.connection
|
68
|
+
),
|
69
|
+
:solr
|
70
|
+
)
|
71
|
+
|
72
|
+
# To use the fedora adapter you must add `gem 'ldp'` to your Gemfile
|
73
|
+
Valkyrie::MetadataAdapter.register(
|
74
|
+
Valkyrie::Persistence::Fedora::MetadataAdapter.new(
|
75
|
+
connection: ::Ldp::Client.new("http://localhost:8988/rest"),
|
76
|
+
base_path: "test_fed",
|
77
|
+
schema: Valkyrie::Persistence::Fedora::PermissiveSchema.new(title: RDF::URI("http://bad.com/title"))
|
78
|
+
),
|
79
|
+
:fedora
|
80
|
+
)
|
81
|
+
|
65
82
|
Valkyrie::MetadataAdapter.register(
|
66
83
|
Valkyrie::Persistence::Memory::MetadataAdapter.new,
|
67
84
|
:memory
|
@@ -85,8 +102,10 @@ Rails.application.config.to_prepare do
|
|
85
102
|
end
|
86
103
|
```
|
87
104
|
|
88
|
-
The initializer registers
|
105
|
+
The initializer registers four `Valkyrie::MetadataAdapter` instances for storing metadata:
|
89
106
|
* `:postgres` which stores metadata in a PostgreSQL database
|
107
|
+
* `:solr` which stores metadata in a Solr Index
|
108
|
+
* `:fedora` which stores metadata in a Fedora server.
|
90
109
|
* `:memory` which stores metadata in an in-memory cache (this cache is not persistent, so it is only
|
91
110
|
appropriate for testing)
|
92
111
|
|
@@ -135,7 +154,7 @@ For each environment, you must set two values:
|
|
135
154
|
The values are the short names used in your initializer.
|
136
155
|
|
137
156
|
Further details can be found on the [Persistence Wiki
|
138
|
-
page](https://github.com/samvera
|
157
|
+
page](https://github.com/samvera/valkyrie/wiki/Persistence).
|
139
158
|
|
140
159
|
## Usage
|
141
160
|
|
@@ -159,7 +178,7 @@ attribute :authors, Valkyrie::Types::Array.meta(ordered: true)
|
|
159
178
|
```
|
160
179
|
|
161
180
|
Defining resource attributes is explained in greater detail on the [Using Types Wiki
|
162
|
-
page](https://github.com/samvera
|
181
|
+
page](https://github.com/samvera/valkyrie/wiki/Using-Types).
|
163
182
|
|
164
183
|
#### Work Types Generator
|
165
184
|
|
@@ -195,16 +214,16 @@ objects = adapter.query_service.find_all
|
|
195
214
|
Valkyrie.config.metadata_adapter.query_service.find_all_of_model(model: MyModel)
|
196
215
|
```
|
197
216
|
|
198
|
-
The Wiki documents the usage of [Queries](https://github.com/samvera
|
199
|
-
[Persistence](https://github.com/samvera
|
200
|
-
[ChangeSets and Dirty Tracking](https://github.com/samvera
|
217
|
+
The Wiki documents the usage of [Queries](https://github.com/samvera/valkyrie/wiki/Queries),
|
218
|
+
[Persistence](https://github.com/samvera/valkyrie/wiki/Persistence), and
|
219
|
+
[ChangeSets and Dirty Tracking](https://github.com/samvera/valkyrie/wiki/ChangeSets-and-Dirty-Tracking).
|
201
220
|
|
202
221
|
### Concurrency Support
|
203
222
|
A Valkyrie repository may have concurrent updates, for example, from a load-balanced Rails application, or
|
204
223
|
from multiple [Sidekiq](https://github.com/mperham/sidekiq) background workers). In order to prevent multiple
|
205
224
|
simultaneous updates applied to the same resource from losing or corrupting data, Valkyrie supports optimistic
|
206
225
|
locking. How to use optimistic locking with Valkyrie is documented on the [Optimistic Locking Wiki
|
207
|
-
page](https://github.com/samvera
|
226
|
+
page](https://github.com/samvera/valkyrie/wiki/Optimistic-Locking).
|
208
227
|
|
209
228
|
### The Public API
|
210
229
|
Valkyrie's public API is defined by the shared specs that are used to test each of its core classes.
|
@@ -218,7 +237,7 @@ shared specs, but there may be new ones. These new shared specs will fail in you
|
|
218
237
|
custom adapters, but your application will still work.
|
219
238
|
|
220
239
|
Using the shared specs in your own models is described in more detail on the [Shared Specs Wiki
|
221
|
-
page](https://github.com/samvera
|
240
|
+
page](https://github.com/samvera/valkyrie/wiki/Shared-Specs).
|
222
241
|
|
223
242
|
### Fedora 5 Compatibility
|
224
243
|
When configuring your adapter, include the `fedora_version` parameter in your metadata or storage adapter
|
@@ -290,4 +309,4 @@ This software has been developed by and is brought to you by the Samvera communi
|
|
290
309
|
|
291
310
|
## Contributing
|
292
311
|
|
293
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/samvera
|
312
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/samvera/valkyrie/.
|
data/Rakefile
CHANGED
@@ -57,8 +57,14 @@ namespace :db do
|
|
57
57
|
scope = ENV['SCOPE']
|
58
58
|
verbose_was = ActiveRecord::Migration.verbose
|
59
59
|
ActiveRecord::Migration.verbose = verbose
|
60
|
-
ActiveRecord::Migrator.migrate
|
61
|
-
|
60
|
+
if ActiveRecord::Migrator.respond_to?(:migrate)
|
61
|
+
ActiveRecord::Migrator.migrate(MIGRATIONS_DIR, version) do |migration|
|
62
|
+
scope.blank? || scope == migration.scope
|
63
|
+
end
|
64
|
+
else
|
65
|
+
ActiveRecord::Base.connection.migration_context.migrate(version) do |migration|
|
66
|
+
scope.blank? || scope == migration.scope
|
67
|
+
end
|
62
68
|
end
|
63
69
|
ActiveRecord::Base.clear_cache!
|
64
70
|
ensure
|
@@ -63,7 +63,7 @@ module Valkyrie::Persistence::Fedora
|
|
63
63
|
g.proxy_in = proxy_in.try(:uri)
|
64
64
|
g.next = self.next.try(:rdf_subject)
|
65
65
|
g.prev = prev.try(:rdf_subject)
|
66
|
-
g
|
66
|
+
g.graph
|
67
67
|
end
|
68
68
|
|
69
69
|
# Resolves the URI for the value of the list expression
|
@@ -104,10 +104,10 @@ module Valkyrie::Persistence::Fedora
|
|
104
104
|
# Populates attributes for the LinkedNode
|
105
105
|
# @param instance [ListNode]
|
106
106
|
def populate(instance)
|
107
|
-
instance.proxy_for = resource.proxy_for
|
108
|
-
instance.proxy_in = resource.proxy_in
|
109
|
-
instance.next_uri = resource.next
|
110
|
-
instance.prev_uri = resource.prev
|
107
|
+
instance.proxy_for = resource.proxy_for
|
108
|
+
instance.proxy_in = resource.proxy_in
|
109
|
+
instance.next_uri = resource.next
|
110
|
+
instance.prev_uri = resource.prev
|
111
111
|
end
|
112
112
|
|
113
113
|
private
|
@@ -115,16 +115,33 @@ module Valkyrie::Persistence::Fedora
|
|
115
115
|
# Constructs a set of triples using ActiveTriples as objects
|
116
116
|
# @return [Valkyrie::Persistence::Fedora::ListNode::Resource]
|
117
117
|
def resource
|
118
|
-
@resource ||= Resource.new(uri,
|
118
|
+
@resource ||= Resource.new(uri, graph: graph)
|
119
119
|
end
|
120
120
|
end
|
121
121
|
|
122
122
|
# Class for providing a set of triples modeling linked list nodes
|
123
|
-
class Resource
|
124
|
-
property
|
125
|
-
|
126
|
-
|
127
|
-
|
123
|
+
class Resource
|
124
|
+
def self.property(property, predicate:)
|
125
|
+
define_method property do
|
126
|
+
graph.query([uri, predicate, nil]).objects.first
|
127
|
+
end
|
128
|
+
|
129
|
+
define_method "#{property}=" do |val|
|
130
|
+
return if val.nil?
|
131
|
+
graph << [uri, predicate, val]
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
property :proxy_for, predicate: ::RDF::Vocab::ORE.proxyFor
|
136
|
+
property :proxy_in, predicate: ::RDF::Vocab::ORE.proxyIn
|
137
|
+
property :next, predicate: ::RDF::Vocab::IANA.next
|
138
|
+
property :prev, predicate: ::RDF::Vocab::IANA.prev
|
139
|
+
|
140
|
+
attr_reader :graph, :uri
|
141
|
+
def initialize(uri, graph: RDF::Graph.new)
|
142
|
+
@uri = uri
|
143
|
+
@graph = graph
|
144
|
+
end
|
128
145
|
end
|
129
146
|
end
|
130
147
|
end
|
@@ -1,9 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
#
|
2
|
+
# :nocov:
|
3
|
+
begin
|
4
|
+
gem 'ldp'
|
5
|
+
rescue Gem::LoadError => e
|
6
|
+
raise Gem::LoadError,
|
7
|
+
"You are using the Fedora adapter without installing the #{e.name} gem. "\
|
8
|
+
"Add `gem '#{e.name}'` to your Gemfile."
|
9
|
+
end
|
10
|
+
# :nocov:
|
3
11
|
module Valkyrie::Persistence
|
4
12
|
# Implements the DataMapper Pattern to store metadata into Fedora
|
5
13
|
module Fedora
|
6
|
-
require 'active_triples'
|
7
14
|
require 'ldp'
|
8
15
|
require 'valkyrie/persistence/fedora/permissive_schema'
|
9
16
|
require 'valkyrie/persistence/fedora/metadata_adapter'
|
@@ -1,14 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
# :nocov:
|
2
3
|
begin
|
3
4
|
gem 'pg'
|
5
|
+
gem 'activerecord'
|
4
6
|
rescue Gem::LoadError => e
|
5
7
|
raise Gem::LoadError,
|
6
8
|
"You are using the Postgres adapter without installing the #{e.name} gem. "\
|
7
9
|
"Add `gem '#{e.name}'` to your Gemfile."
|
8
10
|
end
|
11
|
+
# :nocov:
|
9
12
|
module Valkyrie::Persistence
|
10
13
|
# Implements the DataMapper Pattern to store metadata into Postgres
|
11
14
|
module Postgres
|
15
|
+
require 'active_record'
|
12
16
|
require 'valkyrie/persistence/postgres/metadata_adapter'
|
13
17
|
end
|
14
18
|
end
|
@@ -1,7 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
# :nocov:
|
3
|
+
begin
|
4
|
+
gem 'rsolr'
|
5
|
+
rescue Gem::LoadError => e
|
6
|
+
raise Gem::LoadError,
|
7
|
+
"You are using the Solr adapter without installing the #{e.name} gem. "\
|
8
|
+
"Add `gem '#{e.name}'` to your Gemfile."
|
9
|
+
end
|
10
|
+
# :nocov:
|
2
11
|
module Valkyrie::Persistence
|
3
12
|
# Implements the DataMapper Pattern to store metadata into Solr
|
4
13
|
module Solr
|
14
|
+
require 'valkyrie/persistence/postgres/metadata_adapter'
|
5
15
|
require 'valkyrie/persistence/solr/metadata_adapter'
|
6
16
|
require 'valkyrie/persistence/solr/composite_indexer'
|
7
17
|
end
|
data/lib/valkyrie/resource.rb
CHANGED
@@ -52,14 +52,8 @@ module Valkyrie
|
|
52
52
|
# @param type [Dry::Types::Type]
|
53
53
|
# @note Overridden from {Dry::Struct} to make the default type
|
54
54
|
# {Valkyrie::Types::Set}
|
55
|
-
# @todo Remove ability to override built in attributes.
|
56
55
|
def self.attribute(name, type = Valkyrie::Types::Set.optional, internal: false)
|
57
|
-
if reserved_attributes.include?(name.to_sym) && schema[name] && !internal
|
58
|
-
warn "#{name} is a reserved attribute in Valkyrie::Resource and defined by it. You can remove your definition of `attribute :#{name}`. " \
|
59
|
-
"For now your version will be used, but in the next major version the type will be overridden. " \
|
60
|
-
"Called from #{Gem.location_of_caller.join(':')}"
|
61
|
-
schema.delete(name)
|
62
|
-
end
|
56
|
+
raise ReservedAttributeError, "#{name} is a reserved attribute and defined by Valkyrie::Resource, do not redefine it." if reserved_attributes.include?(name.to_sym) && schema[name] && !internal
|
63
57
|
define_method("#{name}=") do |value|
|
64
58
|
set_value(name, value)
|
65
59
|
end
|
@@ -166,5 +160,7 @@ module Valkyrie
|
|
166
160
|
def set_value(key, value)
|
167
161
|
@attributes[key.to_sym] = self.class.schema[key.to_sym].call(value)
|
168
162
|
end
|
163
|
+
|
164
|
+
class ReservedAttributeError < StandardError; end
|
169
165
|
end
|
170
166
|
end
|
@@ -2,25 +2,25 @@
|
|
2
2
|
RSpec.shared_examples 'a Valkyrie::ChangeSetPersister' do |*_flags|
|
3
3
|
before do
|
4
4
|
raise 'adapter must be set with `let(:change_set_persister)`' unless defined? change_set_persister
|
5
|
-
class CustomResource < Valkyrie::Resource
|
5
|
+
class Valkyrie::Specs::CustomResource < Valkyrie::Resource
|
6
6
|
include Valkyrie::Resource::AccessControls
|
7
7
|
attribute :title
|
8
8
|
attribute :member_ids
|
9
9
|
attribute :nested_resource
|
10
10
|
end
|
11
|
-
class CustomChangeSet < Valkyrie::ChangeSet
|
11
|
+
class Valkyrie::Specs::CustomChangeSet < Valkyrie::ChangeSet
|
12
12
|
self.fields = [:title]
|
13
13
|
end
|
14
14
|
end
|
15
15
|
after do
|
16
|
-
|
17
|
-
|
16
|
+
Valkyrie::Specs.send(:remove_const, :CustomResource)
|
17
|
+
Valkyrie::Specs.send(:remove_const, :CustomChangeSet)
|
18
18
|
end
|
19
19
|
|
20
20
|
subject { change_set_persister }
|
21
|
-
let(:resource_class) { CustomResource }
|
21
|
+
let(:resource_class) { Valkyrie::Specs::CustomResource }
|
22
22
|
let(:resource) { resource_class.new }
|
23
|
-
let(:change_set) { CustomChangeSet.new(resource) }
|
23
|
+
let(:change_set) { Valkyrie::Specs::CustomChangeSet.new(resource) }
|
24
24
|
|
25
25
|
it { is_expected.to respond_to(:save).with_keywords(:change_set) }
|
26
26
|
it { is_expected.to respond_to(:save_all).with_keywords(:change_sets) }
|
@@ -32,7 +32,7 @@ RSpec.shared_examples 'a Valkyrie::ChangeSetPersister' do |*_flags|
|
|
32
32
|
it "saves a resource and returns it" do
|
33
33
|
output = subject.save(change_set: change_set)
|
34
34
|
|
35
|
-
expect(output).to be_kind_of CustomResource
|
35
|
+
expect(output).to be_kind_of Valkyrie::Specs::CustomResource
|
36
36
|
expect(output).to be_persisted
|
37
37
|
end
|
38
38
|
end
|
@@ -40,7 +40,7 @@ RSpec.shared_examples 'a Valkyrie::ChangeSetPersister' do |*_flags|
|
|
40
40
|
describe "#delete" do
|
41
41
|
it "deletes a resource" do
|
42
42
|
output = subject.save(change_set: change_set)
|
43
|
-
subject.delete(change_set: CustomChangeSet.new(output))
|
43
|
+
subject.delete(change_set: Valkyrie::Specs::CustomChangeSet.new(output))
|
44
44
|
|
45
45
|
expect do
|
46
46
|
subject.metadata_adapter.query_service.find_by(id: output.id)
|
@@ -50,7 +50,7 @@ RSpec.shared_examples 'a Valkyrie::ChangeSetPersister' do |*_flags|
|
|
50
50
|
|
51
51
|
describe "#save_all" do
|
52
52
|
it "saves multiple change_sets and returns them" do
|
53
|
-
change_set2 = CustomChangeSet.new(resource_class.new)
|
53
|
+
change_set2 = Valkyrie::Specs::CustomChangeSet.new(resource_class.new)
|
54
54
|
output = subject.save_all(change_sets: [change_set, change_set2])
|
55
55
|
|
56
56
|
expect(output.map(&:id).compact.length).to eq 2
|
@@ -3,21 +3,21 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
3
3
|
before do
|
4
4
|
raise 'adapter must be set with `let(:adapter)`' unless
|
5
5
|
defined? adapter
|
6
|
-
class CustomResource < Valkyrie::Resource
|
6
|
+
class Valkyrie::Specs::CustomResource < Valkyrie::Resource
|
7
7
|
attribute :alternate_ids, Valkyrie::Types::Set.of(Valkyrie::Types::ID)
|
8
8
|
attribute :title
|
9
9
|
attribute :member_ids, Valkyrie::Types::Array
|
10
10
|
attribute :a_member_of, Valkyrie::Types::Array
|
11
11
|
attribute :an_ordered_member_of, Valkyrie::Types::Array.meta(ordered: true)
|
12
12
|
end
|
13
|
-
class SecondResource < Valkyrie::Resource
|
13
|
+
class Valkyrie::Specs::SecondResource < Valkyrie::Resource
|
14
14
|
end
|
15
15
|
end
|
16
16
|
after do
|
17
|
-
|
18
|
-
|
17
|
+
Valkyrie::Specs.send(:remove_const, :CustomResource)
|
18
|
+
Valkyrie::Specs.send(:remove_const, :SecondResource)
|
19
19
|
end
|
20
|
-
let(:resource_class) { CustomResource }
|
20
|
+
let(:resource_class) { Valkyrie::Specs::CustomResource }
|
21
21
|
let(:query_service) { adapter.query_service } unless defined? query_service
|
22
22
|
let(:persister) { adapter.persister }
|
23
23
|
subject { adapter.query_service }
|
@@ -45,12 +45,12 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
45
45
|
describe ".find_all_of_model" do
|
46
46
|
it "returns all of that model" do
|
47
47
|
persister.save(resource: resource_class.new)
|
48
|
-
resource2 = persister.save(resource: SecondResource.new)
|
48
|
+
resource2 = persister.save(resource: Valkyrie::Specs::SecondResource.new)
|
49
49
|
|
50
|
-
expect(query_service.find_all_of_model(model: SecondResource).map(&:id)).to contain_exactly resource2.id
|
50
|
+
expect(query_service.find_all_of_model(model: Valkyrie::Specs::SecondResource).map(&:id)).to contain_exactly resource2.id
|
51
51
|
end
|
52
52
|
it "returns an empty array if there are none" do
|
53
|
-
expect(query_service.find_all_of_model(model: SecondResource).to_a).to eq []
|
53
|
+
expect(query_service.find_all_of_model(model: Valkyrie::Specs::SecondResource).to_a).to eq []
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
@@ -92,7 +92,7 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
92
92
|
end
|
93
93
|
|
94
94
|
it 'raises a Valkyrie::Persistence::ObjectNotFoundError when persisted objects do not have alternate_ids' do
|
95
|
-
persister.save(resource: SecondResource.new)
|
95
|
+
persister.save(resource: Valkyrie::Specs::SecondResource.new)
|
96
96
|
expect { query_service.find_by_alternate_identifier(alternate_identifier: Valkyrie::ID.new("123123123")) }.to raise_error ::Valkyrie::Persistence::ObjectNotFoundError
|
97
97
|
end
|
98
98
|
|
@@ -191,7 +191,7 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
191
191
|
end
|
192
192
|
|
193
193
|
context "when the model doesn't have member_ids" do
|
194
|
-
let(:parent) { persister.save(resource: SecondResource.new) }
|
194
|
+
let(:parent) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
|
195
195
|
|
196
196
|
it "returns an empty array" do
|
197
197
|
expect(subject.to_a).to eq []
|
@@ -200,12 +200,12 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
200
200
|
end
|
201
201
|
|
202
202
|
context "filtering by model" do
|
203
|
-
subject { query_service.find_members(resource: parent, model: SecondResource) }
|
203
|
+
subject { query_service.find_members(resource: parent, model: Valkyrie::Specs::SecondResource) }
|
204
204
|
|
205
205
|
context "when the object has members" do
|
206
|
-
let(:child1) { persister.save(resource: SecondResource.new) }
|
206
|
+
let(:child1) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
|
207
207
|
let(:child2) { persister.save(resource: resource_class.new) }
|
208
|
-
let(:child3) { persister.save(resource: SecondResource.new) }
|
208
|
+
let(:child3) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
|
209
209
|
let(:parent) { persister.save(resource: resource_class.new(member_ids: [child3.id, child2.id, child1.id])) }
|
210
210
|
|
211
211
|
it "returns all a resource's members in order" do
|
@@ -284,7 +284,7 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
284
284
|
child = persister.save(resource: resource_class.new(a_member_of: [parent.id]))
|
285
285
|
child2 = persister.save(resource: resource_class.new(a_member_of: [parent.id, parent2.id, parent.id]))
|
286
286
|
persister.save(resource: resource_class.new)
|
287
|
-
persister.save(resource: SecondResource.new)
|
287
|
+
persister.save(resource: Valkyrie::Specs::SecondResource.new)
|
288
288
|
|
289
289
|
expect(query_service.find_inverse_references_by(resource: parent, property: :a_member_of).map(&:id).to_a).to contain_exactly child.id, child2.id
|
290
290
|
end
|
@@ -302,7 +302,7 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
302
302
|
child = persister.save(resource: resource_class.new(an_ordered_member_of: [parent.id]))
|
303
303
|
child2 = persister.save(resource: resource_class.new(an_ordered_member_of: [parent.id, parent.id]))
|
304
304
|
persister.save(resource: resource_class.new)
|
305
|
-
persister.save(resource: SecondResource.new)
|
305
|
+
persister.save(resource: Valkyrie::Specs::SecondResource.new)
|
306
306
|
|
307
307
|
expect(query_service.find_inverse_references_by(resource: parent, property: :an_ordered_member_of).map(&:id).to_a).to contain_exactly child.id, child2.id
|
308
308
|
end
|
@@ -316,7 +316,7 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
316
316
|
child = persister.save(resource: resource_class.new(a_member_of: [parent.id]))
|
317
317
|
child2 = persister.save(resource: resource_class.new(a_member_of: [parent.id, parent2.id, parent.id]))
|
318
318
|
persister.save(resource: resource_class.new)
|
319
|
-
persister.save(resource: SecondResource.new)
|
319
|
+
persister.save(resource: Valkyrie::Specs::SecondResource.new)
|
320
320
|
|
321
321
|
expect(query_service.find_inverse_references_by(id: parent.id, property: :a_member_of).map(&:id).to_a).to contain_exactly child.id, child2.id
|
322
322
|
end
|
@@ -362,7 +362,7 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
362
362
|
end
|
363
363
|
|
364
364
|
context "when the model doesn't have member_ids" do
|
365
|
-
let(:child1) { persister.save(resource: SecondResource.new) }
|
365
|
+
let(:child1) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
|
366
366
|
|
367
367
|
it "returns an empty array if there are none" do
|
368
368
|
expect(query_service.find_parents(resource: child1).to_a).to eq []
|
@@ -52,16 +52,16 @@ RSpec.shared_examples 'a Valkyrie::Resource' do
|
|
52
52
|
|
53
53
|
describe "#human_readable_type" do
|
54
54
|
before do
|
55
|
-
class MyCustomResource < Valkyrie::Resource
|
55
|
+
class Valkyrie::Specs::MyCustomResource < Valkyrie::Resource
|
56
56
|
attribute :title, Valkyrie::Types::Set
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
60
|
after do
|
61
|
-
|
61
|
+
Valkyrie::Specs.send(:remove_const, :MyCustomResource)
|
62
62
|
end
|
63
63
|
|
64
|
-
subject(:my_custom_resource) { MyCustomResource.new }
|
64
|
+
subject(:my_custom_resource) { Valkyrie::Specs::MyCustomResource.new }
|
65
65
|
|
66
66
|
it "returns a human readable rendering of the resource class" do
|
67
67
|
expect(my_custom_resource.human_readable_type).to eq "My Custom Resource"
|
@@ -11,7 +11,7 @@ RSpec.shared_examples 'a Valkyrie::Persistence::Solr::Indexer' do |*_flags|
|
|
11
11
|
}
|
12
12
|
end
|
13
13
|
let(:resource) do
|
14
|
-
Resource.new(
|
14
|
+
Valkyrie::Specs::Resource.new(
|
15
15
|
id: "1",
|
16
16
|
internal_resource: 'Resource',
|
17
17
|
attributes: attributes
|
@@ -20,7 +20,7 @@ RSpec.shared_examples 'a Valkyrie::Persistence::Solr::Indexer' do |*_flags|
|
|
20
20
|
let(:indexer) { described_class.new(resource: resource) }
|
21
21
|
|
22
22
|
before do
|
23
|
-
class Resource < Valkyrie::Resource
|
23
|
+
class Valkyrie::Specs::Resource < Valkyrie::Resource
|
24
24
|
attribute :title, Valkyrie::Types::Set
|
25
25
|
attribute :author, Valkyrie::Types::Set
|
26
26
|
attribute :birthday, Valkyrie::Types::DateTime.optional
|
@@ -29,7 +29,7 @@ RSpec.shared_examples 'a Valkyrie::Persistence::Solr::Indexer' do |*_flags|
|
|
29
29
|
end
|
30
30
|
|
31
31
|
after do
|
32
|
-
|
32
|
+
Valkyrie::Specs.send(:remove_const, :Resource)
|
33
33
|
end
|
34
34
|
|
35
35
|
describe '#to_solr' do
|
@@ -5,11 +5,11 @@ RSpec.shared_examples 'a Valkyrie::StorageAdapter' do
|
|
5
5
|
defined? storage_adapter
|
6
6
|
raise 'file must be set with `let(:file)`' unless
|
7
7
|
defined? file
|
8
|
-
class CustomResource < Valkyrie::Resource
|
8
|
+
class Valkyrie::Specs::CustomResource < Valkyrie::Resource
|
9
9
|
end
|
10
10
|
end
|
11
11
|
after do
|
12
|
-
|
12
|
+
Valkyrie::Specs.send(:remove_const, :CustomResource)
|
13
13
|
end
|
14
14
|
subject { storage_adapter }
|
15
15
|
it { is_expected.to respond_to(:handles?).with_keywords(:id) }
|
@@ -18,7 +18,7 @@ RSpec.shared_examples 'a Valkyrie::StorageAdapter' do
|
|
18
18
|
it { is_expected.to respond_to(:upload).with_keywords(:file, :resource, :original_filename) }
|
19
19
|
|
20
20
|
it "can upload, validate, re-fetch, and delete a file" do
|
21
|
-
resource = CustomResource.new(id: "test")
|
21
|
+
resource = Valkyrie::Specs::CustomResource.new(id: "test")
|
22
22
|
sha1 = Digest::SHA1.file(file).to_s
|
23
23
|
size = file.size
|
24
24
|
expect(uploaded_file = storage_adapter.upload(file: file, original_filename: 'foo.jpg', resource: resource)).to be_kind_of Valkyrie::StorageAdapter::File
|
@@ -1,4 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
module Valkyrie
|
3
|
+
# Define a wrapper namespace for test resources.
|
4
|
+
module Specs
|
5
|
+
end
|
6
|
+
end
|
2
7
|
require 'valkyrie/specs/shared_specs/persister.rb'
|
3
8
|
require 'valkyrie/specs/shared_specs/queries.rb'
|
4
9
|
require 'valkyrie/specs/shared_specs/metadata_adapter'
|
data/lib/valkyrie/version.rb
CHANGED
data/lib/valkyrie.rb
CHANGED
@@ -14,7 +14,6 @@ require 'valkyrie/rdf_patches'
|
|
14
14
|
require 'json/ld'
|
15
15
|
require 'logger'
|
16
16
|
require 'rdf/vocab'
|
17
|
-
require 'rails'
|
18
17
|
|
19
18
|
module Valkyrie
|
20
19
|
require 'valkyrie/id'
|
@@ -49,11 +48,15 @@ module Valkyrie
|
|
49
48
|
end
|
50
49
|
|
51
50
|
def environment
|
52
|
-
Rails.env
|
51
|
+
if const_defined?(:Rails) && Rails.respond_to?(:env)
|
52
|
+
Rails.env
|
53
|
+
else
|
54
|
+
ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development"
|
55
|
+
end
|
53
56
|
end
|
54
57
|
|
55
58
|
def config_root_path
|
56
|
-
if const_defined?(:Rails) && Rails.root
|
59
|
+
if const_defined?(:Rails) && Rails.respond_to?(:root)
|
57
60
|
Rails.root
|
58
61
|
else
|
59
62
|
Pathname.new(Dir.pwd)
|
data/solr/config/schema.xml
CHANGED
@@ -168,7 +168,6 @@
|
|
168
168
|
<fieldType class="solr.TextField" name="textSuggest" positionIncrementGap="100">
|
169
169
|
<analyzer>
|
170
170
|
<tokenizer class="solr.KeywordTokenizerFactory"/>
|
171
|
-
<filter class="solr.StandardFilterFactory"/>
|
172
171
|
<filter class="solr.LowerCaseFilterFactory"/>
|
173
172
|
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
|
174
173
|
</analyzer>
|
data/tasks/dev.rake
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
namespace :server do
|
4
4
|
desc "Start solr and fedora servers for testing"
|
5
5
|
task :test do
|
6
|
+
require 'rails'
|
6
7
|
require 'solr_wrapper'
|
7
8
|
require 'fcrepo_wrapper'
|
8
9
|
SolrWrapper.wrap(shared_solr_opts.merge(port: 8984, instance_dir: 'tmp/blacklight-core-test')) do |solr|
|
@@ -21,6 +22,7 @@ namespace :server do
|
|
21
22
|
|
22
23
|
desc "Cleanup test servers"
|
23
24
|
task :clean_test do
|
25
|
+
require 'rails'
|
24
26
|
require 'solr_wrapper'
|
25
27
|
require 'fcrepo_wrapper'
|
26
28
|
SolrWrapper.instance(shared_solr_opts.merge(port: 8984, instance_dir: 'tmp/blacklight-core-test')).remove_instance_dir!
|
@@ -31,6 +33,7 @@ namespace :server do
|
|
31
33
|
|
32
34
|
desc "Start solr and fedora servers for development"
|
33
35
|
task :development do
|
36
|
+
require 'rails'
|
34
37
|
require 'solr_wrapper'
|
35
38
|
require 'fcrepo_wrapper'
|
36
39
|
|
data/tasks/docker.rake
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require 'valkyrie'
|
3
3
|
|
4
|
-
if
|
4
|
+
if Valkyrie.environment == "development" || Valkyrie.environment == "test"
|
5
5
|
begin
|
6
6
|
require 'docker/stack/rake_task'
|
7
7
|
|
@@ -17,7 +17,7 @@ if Rails.env.development? || Rails.env.test?
|
|
17
17
|
|
18
18
|
desc 'Spin up test stack and run specs'
|
19
19
|
task :spec do
|
20
|
-
|
20
|
+
ENV["RACK_ENV"] = "test"
|
21
21
|
Docker::Stack::Controller.new(project: 'valkyrie', cleanup: true).with_containers do
|
22
22
|
Rake::Task['db:create'].invoke
|
23
23
|
Rake::Task['db:migrate'].invoke
|
data/valkyrie.gemspec
CHANGED
@@ -25,15 +25,12 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_dependency 'dry-types', '~> 0.13.0'
|
26
26
|
spec.add_dependency 'rdf'
|
27
27
|
spec.add_dependency 'activesupport'
|
28
|
-
spec.add_dependency 'activerecord'
|
29
28
|
spec.add_dependency 'railties' # To use generators and engines
|
30
29
|
spec.add_dependency 'reform'
|
31
30
|
spec.add_dependency 'reform-rails'
|
32
31
|
spec.add_dependency 'json-ld'
|
33
32
|
spec.add_dependency 'json'
|
34
|
-
spec.add_dependency '
|
35
|
-
spec.add_dependency 'ldp'
|
36
|
-
spec.add_dependency 'rsolr'
|
33
|
+
spec.add_dependency 'rdf-vocab'
|
37
34
|
|
38
35
|
spec.add_development_dependency "bundler", "~> 1.16"
|
39
36
|
spec.add_development_dependency "rake", "~> 10.0"
|
@@ -43,12 +40,11 @@ Gem::Specification.new do |spec|
|
|
43
40
|
spec.add_development_dependency "pry-byebug"
|
44
41
|
spec.add_development_dependency "database_cleaner"
|
45
42
|
spec.add_development_dependency "simplecov"
|
46
|
-
spec.add_development_dependency "coveralls"
|
47
43
|
spec.add_development_dependency "bixby"
|
48
44
|
spec.add_development_dependency 'yard'
|
49
45
|
spec.add_development_dependency 'solr_wrapper'
|
50
46
|
spec.add_development_dependency 'fcrepo_wrapper'
|
51
47
|
spec.add_development_dependency 'docker-stack', '~> 0.2.6'
|
52
|
-
spec.add_development_dependency 'activerecord', '~> 5.1.0'
|
53
48
|
spec.add_development_dependency 'timecop'
|
49
|
+
spec.add_development_dependency 'appraisal'
|
54
50
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: valkyrie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.RC4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Trey Pendragon
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-struct
|
@@ -94,20 +94,6 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: activerecord
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :runtime
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
98
|
name: railties
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -179,35 +165,7 @@ dependencies:
|
|
179
165
|
- !ruby/object:Gem::Version
|
180
166
|
version: '0'
|
181
167
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - ">="
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: '0'
|
188
|
-
type: :runtime
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - ">="
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: '0'
|
195
|
-
- !ruby/object:Gem::Dependency
|
196
|
-
name: ldp
|
197
|
-
requirement: !ruby/object:Gem::Requirement
|
198
|
-
requirements:
|
199
|
-
- - ">="
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
version: '0'
|
202
|
-
type: :runtime
|
203
|
-
prerelease: false
|
204
|
-
version_requirements: !ruby/object:Gem::Requirement
|
205
|
-
requirements:
|
206
|
-
- - ">="
|
207
|
-
- !ruby/object:Gem::Version
|
208
|
-
version: '0'
|
209
|
-
- !ruby/object:Gem::Dependency
|
210
|
-
name: rsolr
|
168
|
+
name: rdf-vocab
|
211
169
|
requirement: !ruby/object:Gem::Requirement
|
212
170
|
requirements:
|
213
171
|
- - ">="
|
@@ -332,20 +290,6 @@ dependencies:
|
|
332
290
|
- - ">="
|
333
291
|
- !ruby/object:Gem::Version
|
334
292
|
version: '0'
|
335
|
-
- !ruby/object:Gem::Dependency
|
336
|
-
name: coveralls
|
337
|
-
requirement: !ruby/object:Gem::Requirement
|
338
|
-
requirements:
|
339
|
-
- - ">="
|
340
|
-
- !ruby/object:Gem::Version
|
341
|
-
version: '0'
|
342
|
-
type: :development
|
343
|
-
prerelease: false
|
344
|
-
version_requirements: !ruby/object:Gem::Requirement
|
345
|
-
requirements:
|
346
|
-
- - ">="
|
347
|
-
- !ruby/object:Gem::Version
|
348
|
-
version: '0'
|
349
293
|
- !ruby/object:Gem::Dependency
|
350
294
|
name: bixby
|
351
295
|
requirement: !ruby/object:Gem::Requirement
|
@@ -417,21 +361,21 @@ dependencies:
|
|
417
361
|
- !ruby/object:Gem::Version
|
418
362
|
version: 0.2.6
|
419
363
|
- !ruby/object:Gem::Dependency
|
420
|
-
name:
|
364
|
+
name: timecop
|
421
365
|
requirement: !ruby/object:Gem::Requirement
|
422
366
|
requirements:
|
423
|
-
- - "
|
367
|
+
- - ">="
|
424
368
|
- !ruby/object:Gem::Version
|
425
|
-
version:
|
369
|
+
version: '0'
|
426
370
|
type: :development
|
427
371
|
prerelease: false
|
428
372
|
version_requirements: !ruby/object:Gem::Requirement
|
429
373
|
requirements:
|
430
|
-
- - "
|
374
|
+
- - ">="
|
431
375
|
- !ruby/object:Gem::Version
|
432
|
-
version:
|
376
|
+
version: '0'
|
433
377
|
- !ruby/object:Gem::Dependency
|
434
|
-
name:
|
378
|
+
name: appraisal
|
435
379
|
requirement: !ruby/object:Gem::Requirement
|
436
380
|
requirements:
|
437
381
|
- - ">="
|
@@ -459,6 +403,8 @@ files:
|
|
459
403
|
- ".rspec"
|
460
404
|
- ".rubocop.yml"
|
461
405
|
- ".rubocop_todo.yml"
|
406
|
+
- ".tool-versions"
|
407
|
+
- Appraisals
|
462
408
|
- CHANGELOG.md
|
463
409
|
- CODE_OF_CONDUCT.md
|
464
410
|
- CONTRIBUTING.md
|
@@ -484,6 +430,8 @@ files:
|
|
484
430
|
- db/migrate/20180802220739_add_optimistic_locking_to_orm_resources.rb
|
485
431
|
- db/schema.rb
|
486
432
|
- db/seeds.rb
|
433
|
+
- gemfiles/activerecord_5_1.gemfile
|
434
|
+
- gemfiles/activerecord_5_2.gemfile
|
487
435
|
- lib/config/database_connection.rb
|
488
436
|
- lib/generators/valkyrie/resource_generator.rb
|
489
437
|
- lib/generators/valkyrie/templates/resource.rb.erb
|
@@ -607,7 +555,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
607
555
|
version: 1.3.1
|
608
556
|
requirements: []
|
609
557
|
rubyforge_project:
|
610
|
-
rubygems_version: 2.7.
|
558
|
+
rubygems_version: 2.7.6
|
611
559
|
signing_key:
|
612
560
|
specification_version: 4
|
613
561
|
summary: An ORM using the Data Mapper pattern, specifically built to solve Digital
|