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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 46ec28ef4c223e885ba6b6e5c8cb9e53d87ee08e550db09dd1d655af768a4043
4
- data.tar.gz: 87b33c7db9d9211b4a8c294a9f6aeef8e2b06487523324eedcec2850960e6963
3
+ metadata.gz: f9151d2366b77d6dd72a8303e9e33cea7b9b5204e6eaa6decbfd112242632317
4
+ data.tar.gz: 6dd48e9383552796429bec2e2d1e1968f0566478eb9398292407dcc48d3e9739
5
5
  SHA512:
6
- metadata.gz: 475e3c5bc3064c1515fcad708c682eb90151dcea9d13628402125eccddceb786b4892b8d8945ec6bbc1bcc6429561c7e458f34aac45d3a8cb035db0c0a4328c4
7
- data.tar.gz: a938133503843f807466f4ebb4bff76b09eaab6d615fe6d17b6b3dcf2d6af9841a6561815d8e16191fcbacfe5b4513094804140f3433e5214bc45427f4d1ac87
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.16.2
40
+ command: gem install bundler -v 1.17.2
17
41
  - restore_cache:
18
42
  keys:
19
- - bundle-{{ checksum "Gemfile" }}-{{ checksum "valkyrie.gemspec" }}
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 "Gemfile" }}-{{ checksum "valkyrie.gemspec" }}
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
@@ -8,3 +8,4 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  /vendor
11
+ /gemfiles/*.lock
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
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+ appraise "activerecord-5-2" do
3
+ gem "activerecord", "~> 5.2.0"
4
+ end
5
+
6
+ appraise "activerecord-5-1" do
7
+ gem "activerecord", "~> 5.1.0"
8
+ end
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
@@ -4,4 +4,7 @@ source 'https://rubygems.org'
4
4
  # Specify your gem's dependencies in valkyrie.gemspec
5
5
  gemspec
6
6
 
7
+ gem 'activerecord'
8
+ gem 'ldp'
7
9
  gem 'pg'
10
+ gem 'rsolr'
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-labs/valkyrie.svg?style=svg)](https://circleci.com/gh/samvera-labs/valkyrie)
9
- [![Coverage Status](https://coveralls.io/repos/github/samvera-labs/valkyrie/badge.svg?branch=master)](https://coveralls.io/github/samvera-labs/valkyrie?branch=master)
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/github/samvera-labs/valkyrie)
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 two `Valkyrie::MetadataAdapter` instances for storing metadata:
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-labs/valkyrie/wiki/Persistence).
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-labs/valkyrie/wiki/Using-Types).
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-labs/valkyrie/wiki/Queries),
199
- [Persistence](https://github.com/samvera-labs/valkyrie/wiki/Persistence), and
200
- [ChangeSets and Dirty Tracking](https://github.com/samvera-labs/valkyrie/wiki/ChangeSets-and-Dirty-Tracking).
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-labs/valkyrie/wiki/Optimistic-Locking).
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-labs/valkyrie/wiki/Shared-Specs).
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-labs/valkyrie/.
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(MIGRATIONS_DIR, version) do |migration|
61
- scope.blank? || scope == migration.scope
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
@@ -0,0 +1,10 @@
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: "../"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", "~> 5.2.0"
6
+ gem "ldp"
7
+ gem "pg"
8
+ gem "rsolr"
9
+
10
+ gemspec path: "../"
@@ -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.first
108
- instance.proxy_in = resource.proxy_in.first
109
- instance.next_uri = resource.next.first
110
- instance.prev_uri = resource.prev.first
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, data: graph)
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 < ActiveTriples::Resource
124
- property :proxy_for, predicate: ::RDF::Vocab::ORE.proxyFor, cast: false
125
- property :proxy_in, predicate: ::RDF::Vocab::ORE.proxyIn, cast: false
126
- property :next, predicate: ::RDF::Vocab::IANA.next, cast: false
127
- property :prev, predicate: ::RDF::Vocab::IANA.prev, cast: false
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
@@ -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
- Object.send(:remove_const, :CustomResource)
17
- Object.send(:remove_const, :CustomChangeSet)
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
- Object.send(:remove_const, :CustomResource)
18
- Object.send(:remove_const, :SecondResource)
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
- Object.send(:remove_const, :MyCustomResource)
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
- Object.send(:remove_const, :Resource)
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
- Object.send(:remove_const, :CustomResource)
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'
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Valkyrie
3
- VERSION = "2.0.0.RC3"
3
+ VERSION = "2.0.0.RC4"
4
4
  end
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)
@@ -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 Rails.env.development? || Rails.env.test?
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
- Rails.env = 'test'
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 'active-triples'
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.RC3
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-02-07 00:00:00.000000000 Z
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: active-triples
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: activerecord
364
+ name: timecop
421
365
  requirement: !ruby/object:Gem::Requirement
422
366
  requirements:
423
- - - "~>"
367
+ - - ">="
424
368
  - !ruby/object:Gem::Version
425
- version: 5.1.0
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: 5.1.0
376
+ version: '0'
433
377
  - !ruby/object:Gem::Dependency
434
- name: timecop
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.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