valkyrie 2.0.0.RC3 → 2.0.0.RC4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
![Valkyrie Logo](valkyrie_logo.png)
|
6
6
|
|
7
7
|
Code: [![Version](https://badge.fury.io/rb/valkyrie.png)](http://badge.fury.io/rb/valkyrie)
|
8
|
-
[![Build Status](https://circleci.com/gh/samvera
|
9
|
-
|
10
|
-
[![Stories in Ready](https://badge.waffle.io/samvera-labs/valkyrie.png?label=ready&title=Ready)](https://waffle.io/samvera-labs/valkyrie)
|
8
|
+
[![Build Status](https://circleci.com/gh/samvera/valkyrie.svg?style=svg)](https://circleci.com/gh/samvera/valkyrie)
|
9
|
+
![Coverage Status](https://img.shields.io/badge/Coverage-100-brightgreen.svg)
|
11
10
|
|
12
11
|
Docs: [![Contribution Guidelines](http://img.shields.io/badge/CONTRIBUTING-Guidelines-blue.svg)](./CONTRIBUTING.md)
|
13
12
|
[![Apache 2.0 License](http://img.shields.io/badge/APACHE2-license-blue.svg)](./LICENSE)
|
14
|
-
[![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/
|
13
|
+
[![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/gems/valkyrie)
|
15
14
|
|
16
15
|
Jump in: [![Slack Status](http://slack.samvera.org/badge.svg)](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
|