valkyrie 2.0.2 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +0 -24
  3. data/Appraisals +0 -4
  4. data/CHANGELOG.md +65 -0
  5. data/README.md +2 -2
  6. data/db/schema.rb +0 -40
  7. data/gemfiles/activerecord_5_2.gemfile +2 -0
  8. data/gemfiles/activerecord_6_0.gemfile +2 -0
  9. data/lib/valkyrie.rb +20 -2
  10. data/lib/valkyrie/id.rb +16 -1
  11. data/lib/valkyrie/logging.rb +72 -0
  12. data/lib/valkyrie/persistence/composite_persister.rb +1 -1
  13. data/lib/valkyrie/persistence/fedora.rb +2 -0
  14. data/lib/valkyrie/persistence/fedora/list_node.rb +3 -6
  15. data/lib/valkyrie/persistence/fedora/metadata_adapter.rb +2 -2
  16. data/lib/valkyrie/persistence/fedora/permissive_schema.rb +2 -2
  17. data/lib/valkyrie/persistence/fedora/persister.rb +2 -1
  18. data/lib/valkyrie/persistence/fedora/query_service.rb +20 -17
  19. data/lib/valkyrie/persistence/memory/query_service.rb +32 -10
  20. data/lib/valkyrie/persistence/postgres/query_service.rb +66 -13
  21. data/lib/valkyrie/persistence/solr/persister.rb +4 -17
  22. data/lib/valkyrie/persistence/solr/queries/find_all_query.rb +6 -0
  23. data/lib/valkyrie/persistence/solr/query_service.rb +33 -44
  24. data/lib/valkyrie/persistence/solr/repository.rb +2 -1
  25. data/lib/valkyrie/rdf_patches.rb +2 -2
  26. data/lib/valkyrie/resource.rb +10 -2
  27. data/lib/valkyrie/specs/shared_specs/persister.rb +3 -3
  28. data/lib/valkyrie/specs/shared_specs/queries.rb +112 -9
  29. data/lib/valkyrie/storage/fedora.rb +1 -1
  30. data/lib/valkyrie/storage_adapter.rb +5 -2
  31. data/lib/valkyrie/types.rb +2 -0
  32. data/lib/valkyrie/version.rb +1 -1
  33. data/solr/config/solrconfig.xml +0 -10
  34. data/valkyrie.gemspec +1 -0
  35. metadata +17 -4
  36. data/db/seeds.rb +0 -8
  37. data/gemfiles/activerecord_5_1.gemfile +0 -10
@@ -62,8 +62,9 @@ module Valkyrie::Persistence::Solr
62
62
  # Given a new Valkyrie Resource, generate a random UUID and assign it to the Resource
63
63
  # @param [Valkyrie::Resource] resource
64
64
  # @param [String] the UUID for the new resource
65
+ # @see Valkyrie::Logging for details concerning log suppression.
65
66
  def generate_id(resource)
66
- Valkyrie.logger.warn "The Solr adapter is not meant to persist new resources, but is now generating an ID."
67
+ Valkyrie.logger.warn("The Solr adapter is not meant to persist new resources, but is now generating an ID.", logging_context: "Valkyrie::Persistence::Solr::Repository#generate_id")
67
68
  resource.id = SecureRandom.uuid
68
69
  end
69
70
 
@@ -6,12 +6,12 @@
6
6
  module RDF
7
7
  class Literal
8
8
  def as_json(*_args)
9
- JSON::LD::API.fromRdf([RDF::Statement.new(RDF::URI(""), RDF::URI(""), self)])[0][""][0]
9
+ ::JSON::LD::API.fromRdf([RDF::Statement.new(RDF::URI(""), RDF::URI(""), self)])[0][""][0]
10
10
  end
11
11
  end
12
12
  class URI
13
13
  def as_json(*_args)
14
- JSON::LD::API.fromRdf([RDF::Statement.new(RDF::URI(""), RDF::URI(""), self)])[0][""][0]
14
+ ::JSON::LD::API.fromRdf([RDF::Statement.new(RDF::URI(""), RDF::URI(""), self)])[0][""][0]
15
15
  end
16
16
  end
17
17
  end
@@ -50,7 +50,6 @@ module Valkyrie
50
50
  attribute_names.include?(name.to_sym) &&
51
51
  !internal
52
52
 
53
- type = type.meta(ordered: true) if name == :member_ids
54
53
  super(name, type)
55
54
  end
56
55
 
@@ -58,9 +57,14 @@ module Valkyrie
58
57
  # @return [Dry::Struct]
59
58
  # @raise [RepeatedAttributeError] when trying to define attribute with the
60
59
  # same name as previously defined one
60
+ # @raise [ReservedAttributeError] when trying to define an attribute
61
+ # reserved by Valkyrie
61
62
  # @see #attribute
62
63
  # @note extends {Dry::Struct} by adding `#attr=` style setters
63
64
  def self.attributes(new_schema)
65
+ new_schema[:member_ids] = new_schema[:member_ids].meta(ordered: true) if
66
+ new_schema.key?(:member_ids)
67
+
64
68
  super
65
69
 
66
70
  new_schema.each_key do |key|
@@ -109,6 +113,10 @@ module Valkyrie
109
113
  self.class.optimistic_locking_enabled?
110
114
  end
111
115
 
116
+ def clear_optimistic_lock_token!
117
+ send("#{Valkyrie::Persistence::Attributes::OPTIMISTIC_LOCK}=", []) if optimistic_locking_enabled?
118
+ end
119
+
112
120
  def attributes
113
121
  Hash[self.class.attribute_names.map { |x| [x, nil] }].merge(super).freeze
114
122
  end
@@ -183,7 +191,7 @@ module Valkyrie
183
191
 
184
192
  # Returns if an attribute is set as ordered.
185
193
  def ordered_attribute?(key)
186
- self.class.schema.key(key).type.meta.try(:[], :ordered)
194
+ self.class.schema.key(key.to_sym).type.meta.try(:[], :ordered)
187
195
  end
188
196
 
189
197
  class ReservedAttributeError < StandardError; end
@@ -84,14 +84,14 @@ RSpec.shared_examples 'a Valkyrie::Persister' do |*flags|
84
84
 
85
85
  it "can support deep nesting of resources" do
86
86
  pending "No support for deep nesting." if flags.include?(:no_deep_nesting)
87
- book = resource_class.new(title: "Sub-nested", author: [Valkyrie::ID.new("test"), RDF::Literal.new("Test", language: :fr), RDF::URI("http://test.com")])
87
+ book = resource_class.new(title: "Sub-nested", author: [Valkyrie::ID.new("test"), RDF::Literal.new("Test", language: :fr), RDF::URI("http://example.com")])
88
88
  book2 = resource_class.new(title: "Nested", nested_resource: book)
89
89
  book3 = persister.save(resource: resource_class.new(nested_resource: book2))
90
90
 
91
91
  reloaded = query_service.find_by(id: book3.id)
92
92
  expect(reloaded.nested_resource.first.title).to eq ["Nested"]
93
93
  expect(reloaded.nested_resource.first.nested_resource.first.title).to eq ["Sub-nested"]
94
- expect(reloaded.nested_resource.first.nested_resource.first.author).to contain_exactly Valkyrie::ID.new("test"), RDF::Literal.new("Test", language: :fr), RDF::URI("http://test.com")
94
+ expect(reloaded.nested_resource.first.nested_resource.first.author).to contain_exactly Valkyrie::ID.new("test"), RDF::Literal.new("Test", language: :fr), RDF::URI("http://example.com")
95
95
  end
96
96
 
97
97
  it "stores created_at/updated_at" do
@@ -360,7 +360,7 @@ RSpec.shared_examples 'a Valkyrie::Persister' do |*flags|
360
360
  resource = MyLockingResource.new(title: ["My Locked Resource"])
361
361
  initial_resource = persister.save(resource: resource)
362
362
  initial_token = initial_resource[Valkyrie::Persistence::Attributes::OPTIMISTIC_LOCK].first
363
- initial_resource.send("#{Valkyrie::Persistence::Attributes::OPTIMISTIC_LOCK}=", [])
363
+ initial_resource.clear_optimistic_lock_token!
364
364
  updated_resource = persister.save(resource: initial_resource)
365
365
  expect(initial_token.serialize)
366
366
  .not_to eq(updated_resource[Valkyrie::Persistence::Attributes::OPTIMISTIC_LOCK].first.serialize)
@@ -12,10 +12,15 @@ RSpec.shared_examples 'a Valkyrie query provider' do
12
12
  end
13
13
  class Valkyrie::Specs::SecondResource < Valkyrie::Resource
14
14
  end
15
+ class Valkyrie::Specs::ThirdResource < Valkyrie::Resource
16
+ attribute :a_member_of, Valkyrie::Types::Array
17
+ attribute :an_ordered_member_of, Valkyrie::Types::Array.meta(ordered: true)
18
+ end
15
19
  end
16
20
  after do
17
21
  Valkyrie::Specs.send(:remove_const, :CustomResource)
18
22
  Valkyrie::Specs.send(:remove_const, :SecondResource)
23
+ Valkyrie::Specs.send(:remove_const, :ThirdResource)
19
24
  end
20
25
  let(:resource_class) { Valkyrie::Specs::CustomResource }
21
26
  let(:query_service) { adapter.query_service } unless defined? query_service
@@ -28,10 +33,11 @@ RSpec.shared_examples 'a Valkyrie query provider' do
28
33
  it { is_expected.to respond_to(:find_by_alternate_identifier).with_keywords(:alternate_identifier) }
29
34
  it { is_expected.to respond_to(:find_many_by_ids).with_keywords(:ids) }
30
35
  it { is_expected.to respond_to(:find_members).with_keywords(:resource, :model) }
31
- it { is_expected.to respond_to(:find_references_by).with_keywords(:resource, :property) }
32
- it { is_expected.to respond_to(:find_inverse_references_by).with_keywords(:resource, :property) }
33
- it { is_expected.to respond_to(:find_inverse_references_by).with_keywords(:id, :property) }
36
+ it { is_expected.to respond_to(:find_references_by).with_keywords(:resource, :property, :model) }
37
+ it { is_expected.to respond_to(:find_inverse_references_by).with_keywords(:resource, :property, :model) }
38
+ it { is_expected.to respond_to(:find_inverse_references_by).with_keywords(:id, :property, :model) }
34
39
  it { is_expected.to respond_to(:find_parents).with_keywords(:resource) }
40
+ it { is_expected.to respond_to(:count_all_of_model).with_keywords(:model) }
35
41
 
36
42
  describe ".find_all" do
37
43
  it "returns all created resources" do
@@ -273,14 +279,50 @@ RSpec.shared_examples 'a Valkyrie query provider' do
273
279
  expect(query_service.find_references_by(resource: child, property: :an_ordered_member_of).map(&:id).to_a).to eq []
274
280
  end
275
281
  end
282
+
283
+ context "filtering by model" do
284
+ context "when the object has related resources that match the filter" do
285
+ subject { query_service.find_references_by(resource: child1, property: :a_member_of, model: Valkyrie::Specs::SecondResource) }
286
+ let(:child1) { persister.save(resource: Valkyrie::Specs::ThirdResource.new(a_member_of: [parent3.id, parent2.id, parent.id])) }
287
+ let(:parent) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
288
+ let(:parent2) { persister.save(resource: Valkyrie::Specs::CustomResource.new) }
289
+ let(:parent3) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
290
+
291
+ it "returns only resources with the relationship filtered to the specified model" do
292
+ expect(subject.map(&:id).to_a).to match_array [parent3.id, parent.id]
293
+ end
294
+ end
295
+
296
+ context "when the object has ordered related resources that match the filter" do
297
+ subject { query_service.find_references_by(resource: child1, property: :an_ordered_member_of, model: Valkyrie::Specs::SecondResource) }
298
+ let(:child1) { persister.save(resource: Valkyrie::Specs::ThirdResource.new(an_ordered_member_of: [parent.id, parent3.id, parent2.id, parent.id])) }
299
+ let(:parent) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
300
+ let(:parent2) { persister.save(resource: Valkyrie::Specs::CustomResource.new) }
301
+ let(:parent3) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
302
+
303
+ it "returns only resources with the relationship filtered to the specified model" do
304
+ expect(subject.map(&:id).to_a).to match_array [parent.id, parent3.id, parent.id]
305
+ end
306
+ end
307
+
308
+ context "when there are no related resources that match the filter" do
309
+ subject { query_service.find_references_by(resource: child1, property: :a_member_of, model: Valkyrie::Specs::SecondResource) }
310
+ let(:child1) { persister.save(resource: Valkyrie::Specs::ThirdResource.new(a_member_of: [parent.id])) }
311
+ let(:parent) { persister.save(resource: Valkyrie::Specs::CustomResource.new) }
312
+
313
+ it "returns an empty array" do
314
+ expect(subject.to_a).to eq []
315
+ end
316
+ end
317
+ end
276
318
  end
277
319
 
278
320
  describe ".find_inverse_references_by" do
279
321
  context "when the resource is saved" do
280
322
  context "when the property is unordered" do
281
323
  it "returns everything which references the given resource by the given property" do
282
- parent = persister.save(resource: resource_class.new)
283
- parent2 = persister.save(resource: resource_class.new)
324
+ parent = persister.save(resource: Valkyrie::Specs::SecondResource.new)
325
+ parent2 = persister.save(resource: Valkyrie::Specs::SecondResource.new)
284
326
  child = persister.save(resource: resource_class.new(a_member_of: [parent.id]))
285
327
  child2 = persister.save(resource: resource_class.new(a_member_of: [parent.id, parent2.id, parent.id]))
286
328
  persister.save(resource: resource_class.new)
@@ -290,7 +332,7 @@ RSpec.shared_examples 'a Valkyrie query provider' do
290
332
  end
291
333
 
292
334
  it "returns an empty array if there are none" do
293
- parent = persister.save(resource: resource_class.new)
335
+ parent = persister.save(resource: Valkyrie::Specs::SecondResource.new)
294
336
 
295
337
  expect(query_service.find_inverse_references_by(resource: parent, property: :a_member_of).to_a).to eq []
296
338
  end
@@ -298,7 +340,7 @@ RSpec.shared_examples 'a Valkyrie query provider' do
298
340
 
299
341
  context "when the property is ordered" do
300
342
  it "returns everything which references the given resource by the given property" do
301
- parent = persister.save(resource: resource_class.new)
343
+ parent = persister.save(resource: Valkyrie::Specs::SecondResource.new)
302
344
  child = persister.save(resource: resource_class.new(an_ordered_member_of: [parent.id]))
303
345
  child2 = persister.save(resource: resource_class.new(an_ordered_member_of: [parent.id, parent.id]))
304
346
  persister.save(resource: resource_class.new)
@@ -307,12 +349,38 @@ RSpec.shared_examples 'a Valkyrie query provider' do
307
349
  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
350
  end
309
351
  end
352
+
353
+ context "when the property is ordered for one child but not the other" do
354
+ before do
355
+ class Valkyrie::Specs::Parent < Valkyrie::Resource; end
356
+ class Valkyrie::Specs::ChildWithUnorderedParents < Valkyrie::Resource
357
+ attribute :a_member_of, Valkyrie::Types::Array
358
+ end
359
+ class Valkyrie::Specs::ChildWithOrderedParents < Valkyrie::Resource
360
+ attribute :a_member_of, Valkyrie::Types::Array.meta(ordered: true)
361
+ end
362
+ end
363
+ after do
364
+ Valkyrie::Specs.send(:remove_const, :Parent)
365
+ Valkyrie::Specs.send(:remove_const, :ChildWithUnorderedParents)
366
+ Valkyrie::Specs.send(:remove_const, :ChildWithOrderedParents)
367
+ end
368
+ it "returns" do
369
+ parent = persister.save(resource: Valkyrie::Specs::Parent.new)
370
+ child = persister.save(resource: Valkyrie::Specs::ChildWithUnorderedParents.new(a_member_of: [parent.id]))
371
+ child2 = persister.save(resource: Valkyrie::Specs::ChildWithOrderedParents.new(a_member_of: [parent.id, parent.id]))
372
+ persister.save(resource: Valkyrie::Specs::ChildWithUnorderedParents.new)
373
+ persister.save(resource: Valkyrie::Specs::Parent.new)
374
+
375
+ expect(query_service.find_inverse_references_by(resource: parent, property: :a_member_of).map(&:id).to_a).to contain_exactly child.id, child2.id
376
+ end
377
+ end
310
378
  end
311
379
 
312
380
  context "when id is passed instead of resource" do
313
381
  it "returns everything which references the given resource by the given property" do
314
- parent = persister.save(resource: resource_class.new)
315
- parent2 = persister.save(resource: resource_class.new)
382
+ parent = persister.save(resource: Valkyrie::Specs::SecondResource.new)
383
+ parent2 = persister.save(resource: Valkyrie::Specs::SecondResource.new)
316
384
  child = persister.save(resource: resource_class.new(a_member_of: [parent.id]))
317
385
  child2 = persister.save(resource: resource_class.new(a_member_of: [parent.id, parent2.id, parent.id]))
318
386
  persister.save(resource: resource_class.new)
@@ -335,6 +403,32 @@ RSpec.shared_examples 'a Valkyrie query provider' do
335
403
  expect { query_service.find_inverse_references_by(resource: parent, property: :a_member_of).to_a }.to raise_error ArgumentError
336
404
  end
337
405
  end
406
+
407
+ context "filtering by model" do
408
+ subject { query_service.find_inverse_references_by(resource: parent, property: :a_member_of, model: Valkyrie::Specs::CustomResource) }
409
+
410
+ context "when the object has related resources that match the filter" do
411
+ let(:parent) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
412
+
413
+ it "returns only resources with the relationship filtered to the specified model" do
414
+ child1 = persister.save(resource: Valkyrie::Specs::CustomResource.new(a_member_of: [parent.id]))
415
+ persister.save(resource: Valkyrie::Specs::ThirdResource.new(a_member_of: [parent.id]))
416
+ child3 = persister.save(resource: Valkyrie::Specs::CustomResource.new(a_member_of: [parent.id]))
417
+
418
+ expect(subject.map(&:id).to_a).to match_array [child3.id, child1.id]
419
+ end
420
+ end
421
+
422
+ context "when there are no related resources that match the filter" do
423
+ let(:parent) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
424
+
425
+ it "returns an empty array" do
426
+ persister.save(resource: Valkyrie::Specs::ThirdResource.new(a_member_of: [parent.id]))
427
+
428
+ expect(subject.to_a).to eq []
429
+ end
430
+ end
431
+ end
338
432
  end
339
433
 
340
434
  describe ".find_parents" do
@@ -411,4 +505,13 @@ RSpec.shared_examples 'a Valkyrie query provider' do
411
505
  expect(resource[Valkyrie::Persistence::Attributes::OPTIMISTIC_LOCK]).not_to be_empty
412
506
  end
413
507
  end
508
+
509
+ describe ".count_all_of_model" do
510
+ it "counts all of that model" do
511
+ persister.save(resource: resource_class.new)
512
+ persister.save(resource: Valkyrie::Specs::SecondResource.new)
513
+ persister.save(resource: Valkyrie::Specs::SecondResource.new)
514
+ expect(query_service.count_all_of_model(model: Valkyrie::Specs::SecondResource)).to eq(2)
515
+ end
516
+ end
414
517
  end
@@ -7,7 +7,7 @@ module Valkyrie::Storage
7
7
  SLASH = '/'
8
8
 
9
9
  # @param [Ldp::Client] connection
10
- def initialize(connection:, base_path: "/", fedora_version: 5)
10
+ def initialize(connection:, base_path: "/", fedora_version: Valkyrie::Persistence::Fedora::DEFAULT_FEDORA_VERSION)
11
11
  @connection = connection
12
12
  @base_path = base_path
13
13
  @fedora_version = fedora_version
@@ -5,6 +5,7 @@ module Valkyrie
5
5
  # storage backends (such as fedora, disk, etc)
6
6
  class StorageAdapter
7
7
  class FileNotFound < StandardError; end
8
+ class AdapterNotFoundError < StandardError; end
8
9
  class_attribute :storage_adapters
9
10
  self.storage_adapters = {}
10
11
  class << self
@@ -54,10 +55,12 @@ module Valkyrie
54
55
  # @param id [Valkyrie::ID]
55
56
  # @return [Valkyrie::StorageAdapter]
56
57
  def adapter_for(id:)
57
- # TODO: Determine the appropriate response when we have an unhandled :id
58
- storage_adapters.values.find do |storage_adapter|
58
+ handler = storage_adapters.values.find do |storage_adapter|
59
59
  storage_adapter.handles?(id: id)
60
60
  end
61
+
62
+ raise AdapterNotFoundError, 'Unable to find a StorageAdapter' if handler.nil?
63
+ handler
61
64
  end
62
65
  end
63
66
 
@@ -99,6 +99,8 @@ module Valkyrie
99
99
  end
100
100
  Array.singleton_class.include(ArrayDefault)
101
101
  Set.singleton_class.include(ArrayDefault)
102
+ Relation = Valkyrie::Types::Set.of(Valkyrie::Types::ID)
103
+ OrderedRelation = Valkyrie::Types::Array.of(Valkyrie::Types::ID).meta(ordered: true)
102
104
 
103
105
  # Used for when an input may be an array, but the output needs to be a
104
106
  # single string.
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Valkyrie
3
- VERSION = "2.0.2"
3
+ VERSION = "2.1.0"
4
4
  end
@@ -284,16 +284,6 @@
284
284
  -->
285
285
  </searchComponent>
286
286
 
287
- <searchComponent name="suggest" class="solr.SuggestComponent">
288
- <lst name="suggester">
289
- <str name="name">mySuggester</str>
290
- <str name="lookupImpl">FuzzyLookupFactory</str>
291
- <str name="suggestAnalyzerFieldType">textSuggest</str>
292
- <str name="buildOnCommit">true</str>
293
- <str name="field">suggest</str>
294
- </lst>
295
- </searchComponent>
296
-
297
287
  <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
298
288
  <lst name="defaults">
299
289
  <str name="suggest">true</str>
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.add_dependency 'json'
34
34
  spec.add_dependency 'rdf-vocab'
35
35
  spec.add_dependency 'disposable', '~> 0.4.5'
36
+ spec.add_dependency 'faraday', '< 1.0'
36
37
 
37
38
  spec.add_development_dependency "bundler", "> 1.16.0", "< 3"
38
39
  spec.add_development_dependency "rake", "~> 10.0"
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.2
4
+ version: 2.1.0
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-10-17 00:00:00.000000000 Z
11
+ date: 2020-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-struct
@@ -192,6 +192,20 @@ dependencies:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
194
  version: 0.4.5
195
+ - !ruby/object:Gem::Dependency
196
+ name: faraday
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "<"
200
+ - !ruby/object:Gem::Version
201
+ version: '1.0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "<"
207
+ - !ruby/object:Gem::Version
208
+ version: '1.0'
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: bundler
197
211
  requirement: !ruby/object:Gem::Requirement
@@ -449,8 +463,6 @@ files:
449
463
  - db/migrate/20180212092225_create_updated_at_index.rb
450
464
  - db/migrate/20180802220739_add_optimistic_locking_to_orm_resources.rb
451
465
  - db/schema.rb
452
- - db/seeds.rb
453
- - gemfiles/activerecord_5_1.gemfile
454
466
  - gemfiles/activerecord_5_2.gemfile
455
467
  - gemfiles/activerecord_6_0.gemfile
456
468
  - lib/config/database_connection.rb
@@ -463,6 +475,7 @@ files:
463
475
  - lib/valkyrie/engine.rb
464
476
  - lib/valkyrie/id.rb
465
477
  - lib/valkyrie/indexers/access_controls_indexer.rb
478
+ - lib/valkyrie/logging.rb
466
479
  - lib/valkyrie/metadata_adapter.rb
467
480
  - lib/valkyrie/persistence.rb
468
481
  - lib/valkyrie/persistence/buffered_persister.rb
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
- # This file should contain all the record creation needed to seed the database with its default values.
3
- # The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup).
4
- #
5
- # Examples:
6
- #
7
- # movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
8
- # Character.create(name: 'Luke', movie: movies.first)
@@ -1,10 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 5.1.0"
6
- gem "ldp"
7
- gem "pg"
8
- gem "rsolr"
9
-
10
- gemspec path: "../"