active-fedora 14.0.1 → 15.0.1
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 +105 -115
- data/active-fedora.gemspec +3 -2
- data/lib/active_fedora/attribute_methods/read.rb +18 -16
- data/lib/active_fedora/attribute_methods/write.rb +19 -12
- data/lib/active_fedora/attribute_methods.rb +4 -3
- data/lib/active_fedora/log_subscriber.rb +15 -4
- data/lib/active_fedora/relation/delegation.rb +1 -26
- data/lib/active_fedora/scoping.rb +12 -14
- data/lib/active_fedora/version.rb +1 -1
- metadata +21 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81c84d6a28257371ea706a771020e033ba6ffed34c02c684b1511c12ae4612bd
|
4
|
+
data.tar.gz: 0c3c170e919b87a358a9324c64216b5d066dd5b5e9f13bfec93a1c3de2d1dbad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: faf2b067ac4153666d747de1def049bb8dafda660cb146bbaa54feffed527c1cad551eb9e422368001a852db6d22d6d9e9e848c8b889cddc5af454cea6f184aa
|
7
|
+
data.tar.gz: 423e1560de9c9bf056b0f38bd9d42aa0e88004eb9c2b6a6a45fc02d158588d99eccfc118e28720b7d7e73a3f96e06e87ab0063439de4b2ac19963a4a873378f8
|
data/.circleci/config.yml
CHANGED
@@ -14,10 +14,39 @@ jobs:
|
|
14
14
|
solr_config_path:
|
15
15
|
type: string
|
16
16
|
default: lib/generators/active_fedora/config/solr/templates/solr/conf
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
ruby_type:
|
18
|
+
type: string
|
19
|
+
default: 'ruby'
|
20
|
+
solr_port:
|
21
|
+
type: string
|
22
|
+
default: '8985'
|
23
|
+
fcrepo_version:
|
24
|
+
type: string
|
25
|
+
default: "4.7.5"
|
26
|
+
solr_version:
|
27
|
+
type: string
|
28
|
+
default: "9"
|
29
|
+
docker:
|
30
|
+
- image: cimg/<< parameters.ruby_type >>:<< parameters.ruby_version >>-browsers
|
31
|
+
- image: samvera/fcrepo4:<< parameters.fcrepo_version >>
|
32
|
+
environment:
|
33
|
+
CATALINA_OPTS: "-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
|
34
|
+
- image: zookeeper:3.9
|
35
|
+
environment:
|
36
|
+
ZOO_ADMINSERVER_ENABLED: false
|
37
|
+
- image: solr:<< parameters.solr_version >>
|
38
|
+
environment:
|
39
|
+
VERBOSE: yes
|
40
|
+
SECURITY_JSON: '{"authentication":{"blockUnknown": false, "class":"solr.BasicAuthPlugin", "credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="}, "realm":"My Solr users", "forwardCredentials": false}, "authorization":{ "class":"solr.RuleBasedAuthorizationPlugin", "permissions":[{"name":"security-edit", "role":"admin"}], "user-role":{"solr":"admin"}}}'
|
41
|
+
command: sh -c "server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:2181 -cmd put /security.json \"${SECURITY_JSON}\" && solr-fg -cloud -noprompt -p << parameters.solr_port >> -z localhost:2181"
|
20
42
|
environment:
|
43
|
+
BUNDLE_PATH: vendor/bundle
|
44
|
+
BUNDLE_JOBS: 4
|
45
|
+
BUNDLE_RETRY: 3
|
46
|
+
RAILS_ENV: test
|
47
|
+
RACK_ENV: test
|
48
|
+
FCREPO_TEST_PORT: 8080
|
49
|
+
SPEC_OPTS: --profile 10 --format RspecJunitFormatter --out /tmp/test-results/rspec.xml --format progress
|
21
50
|
RAILS_VERSION: << parameters.rails_version >>
|
22
51
|
steps:
|
23
52
|
- samvera/cached_checkout
|
@@ -37,8 +66,13 @@ jobs:
|
|
37
66
|
bundler_version: << parameters.bundler_version >>
|
38
67
|
project: 'active-fedora'
|
39
68
|
|
40
|
-
-
|
41
|
-
|
69
|
+
- run:
|
70
|
+
name: Install solr core
|
71
|
+
command: |
|
72
|
+
cd << parameters.solr_config_path >>
|
73
|
+
zip -1 -r solr_conf.zip ./*
|
74
|
+
curl -H "Content-type:application/octet-stream" --data-binary @solr_conf.zip "http://solr:SolrRocks@127.0.0.1:8985/solr/admin/configs?action=UPLOAD&name=solrconfig"
|
75
|
+
curl "http://solr:SolrRocks@127.0.0.1:8985/solr/admin/collections?action=CREATE&name=hydra-test&numShards=1&collection.configName=solrconfig"
|
42
76
|
|
43
77
|
- samvera/rubocop
|
44
78
|
|
@@ -47,71 +81,49 @@ jobs:
|
|
47
81
|
workflows:
|
48
82
|
ci:
|
49
83
|
jobs:
|
84
|
+
# Ruby 3.3 releases
|
85
|
+
- bundle_lint_test:
|
86
|
+
name: ruby3-3_rails7-2
|
87
|
+
ruby_version: 3.3.4
|
88
|
+
rails_version: 7.2.0
|
89
|
+
- bundle_lint_test:
|
90
|
+
name: ruby3-3_rails7-1
|
91
|
+
ruby_version: 3.3.4
|
92
|
+
rails_version: 7.1.3.4
|
93
|
+
- bundle_lint_test:
|
94
|
+
name: ruby3-3_rails7-0
|
95
|
+
ruby_version: 3.3.4
|
96
|
+
rails_version: 7.0.8.4
|
97
|
+
- bundle_lint_test:
|
98
|
+
name: ruby3-3_rails6-1
|
99
|
+
ruby_version: 3.3.4
|
100
|
+
rails_version: 6.1.7.8
|
50
101
|
# Ruby 3.2 releases
|
102
|
+
- bundle_lint_test:
|
103
|
+
name: ruby3-2_rails7-1
|
104
|
+
ruby_version: 3.2.5
|
105
|
+
rails_version: 7.1.3.4
|
51
106
|
- bundle_lint_test:
|
52
107
|
name: ruby3-2_rails7-0
|
53
|
-
ruby_version: 3.2.
|
54
|
-
rails_version: 7.0.4
|
108
|
+
ruby_version: 3.2.5
|
109
|
+
rails_version: 7.0.8.4
|
55
110
|
- bundle_lint_test:
|
56
111
|
name: ruby3-2_rails6-1
|
57
|
-
ruby_version: 3.2.
|
58
|
-
rails_version: 6.1.7.
|
59
|
-
- bundle_lint_test:
|
60
|
-
name: ruby3-2_rails6-0
|
61
|
-
ruby_version: 3.2.0
|
62
|
-
rails_version: 6.0.6.1
|
112
|
+
ruby_version: 3.2.5
|
113
|
+
rails_version: 6.1.7.8
|
63
114
|
# Ruby 3.1 releases
|
115
|
+
- bundle_lint_test:
|
116
|
+
name: ruby3-1_rails7-1
|
117
|
+
ruby_version: 3.1.6
|
118
|
+
rails_version: 7.1.3.4
|
64
119
|
- bundle_lint_test:
|
65
120
|
name: ruby3-1_rails7-0
|
66
|
-
ruby_version: 3.1.
|
67
|
-
rails_version: 7.0.4
|
121
|
+
ruby_version: 3.1.6
|
122
|
+
rails_version: 7.0.8.4
|
68
123
|
- bundle_lint_test:
|
69
124
|
name: ruby3-1_rails6-1
|
70
|
-
ruby_version: 3.1.
|
71
|
-
rails_version: 6.1.7.
|
72
|
-
- bundle_lint_test:
|
73
|
-
name: ruby3-1_rails6-0
|
74
|
-
ruby_version: 3.1.3
|
75
|
-
rails_version: 6.0.6.1
|
76
|
-
# Ruby 3.0 releases
|
77
|
-
- bundle_lint_test:
|
78
|
-
name: ruby3-0_rails7-0
|
79
|
-
ruby_version: 3.0.5
|
80
|
-
rails_version: 7.0.4.1
|
81
|
-
- bundle_lint_test:
|
82
|
-
name: ruby3-0_rails6-1
|
83
|
-
ruby_version: 3.0.5
|
84
|
-
rails_version: 6.1.7.1
|
85
|
-
- bundle_lint_test:
|
86
|
-
name: ruby3-0_rails6-0
|
87
|
-
ruby_version: 3.0.5
|
88
|
-
rails_version: 6.0.6.1
|
89
|
-
# Ruby 2.7 releases
|
90
|
-
- bundle_lint_test:
|
91
|
-
name: ruby2-7_rails7-0
|
92
|
-
ruby_version: 2.7.7
|
93
|
-
rails_version: 7.0.4.1
|
94
|
-
- bundle_lint_test:
|
95
|
-
name: ruby2-7_rails6-1
|
96
|
-
ruby_version: 2.7.7
|
97
|
-
rails_version: 6.1.7.1
|
98
|
-
- bundle_lint_test:
|
99
|
-
name: ruby2-7_rails6-0
|
100
|
-
ruby_version: 2.7.7
|
101
|
-
rails_version: 6.0.6.1
|
102
|
-
- bundle_lint_test:
|
103
|
-
name: ruby2-7_rails5-2
|
104
|
-
ruby_version: 2.7.7
|
105
|
-
rails_version: 5.2.8.1
|
106
|
-
# Ruby 2.6 releases
|
107
|
-
- bundle_lint_test:
|
108
|
-
name: ruby2-6_rails6-0
|
109
|
-
ruby_version: 2.6.10
|
110
|
-
rails_version: 6.0.6.1
|
111
|
-
- bundle_lint_test:
|
112
|
-
name: ruby2-6_rails5-2
|
113
|
-
ruby_version: 2.6.10
|
114
|
-
rails_version: 5.2.8.1
|
125
|
+
ruby_version: 3.1.6
|
126
|
+
rails_version: 6.1.7.8
|
115
127
|
|
116
128
|
nightly:
|
117
129
|
triggers:
|
@@ -122,68 +134,46 @@ workflows:
|
|
122
134
|
only:
|
123
135
|
- main
|
124
136
|
jobs:
|
137
|
+
# Ruby 3.3 releases
|
138
|
+
- bundle_lint_test:
|
139
|
+
name: ruby3-3_rails7-2
|
140
|
+
ruby_version: 3.3.4
|
141
|
+
rails_version: 7.2.0
|
142
|
+
- bundle_lint_test:
|
143
|
+
name: ruby3-3_rails7-1
|
144
|
+
ruby_version: 3.3.4
|
145
|
+
rails_version: 7.1.3.4
|
146
|
+
- bundle_lint_test:
|
147
|
+
name: ruby3-3_rails7-0
|
148
|
+
ruby_version: 3.3.4
|
149
|
+
rails_version: 7.0.8.4
|
150
|
+
- bundle_lint_test:
|
151
|
+
name: ruby3-3_rails6-1
|
152
|
+
ruby_version: 3.3.4
|
153
|
+
rails_version: 6.1.7.8
|
125
154
|
# Ruby 3.2 releases
|
155
|
+
- bundle_lint_test:
|
156
|
+
name: ruby3-2_rails7-1
|
157
|
+
ruby_version: 3.2.5
|
158
|
+
rails_version: 7.1.3.4
|
126
159
|
- bundle_lint_test:
|
127
160
|
name: ruby3-2_rails7-0
|
128
|
-
ruby_version: 3.2.
|
129
|
-
rails_version: 7.0.4
|
161
|
+
ruby_version: 3.2.5
|
162
|
+
rails_version: 7.0.8.4
|
130
163
|
- bundle_lint_test:
|
131
164
|
name: ruby3-2_rails6-1
|
132
|
-
ruby_version: 3.2.
|
133
|
-
rails_version: 6.1.7.
|
134
|
-
- bundle_lint_test:
|
135
|
-
name: ruby3-2_rails6-0
|
136
|
-
ruby_version: 3.2.0
|
137
|
-
rails_version: 6.0.6.1
|
165
|
+
ruby_version: 3.2.5
|
166
|
+
rails_version: 6.1.7.8
|
138
167
|
# Ruby 3.1 releases
|
168
|
+
- bundle_lint_test:
|
169
|
+
name: ruby3-1_rails7-1
|
170
|
+
ruby_version: 3.1.6
|
171
|
+
rails_version: 7.1.3.4
|
139
172
|
- bundle_lint_test:
|
140
173
|
name: ruby3-1_rails7-0
|
141
|
-
ruby_version: 3.1.
|
142
|
-
rails_version: 7.0.4
|
174
|
+
ruby_version: 3.1.6
|
175
|
+
rails_version: 7.0.8.4
|
143
176
|
- bundle_lint_test:
|
144
177
|
name: ruby3-1_rails6-1
|
145
|
-
ruby_version: 3.1.
|
146
|
-
rails_version: 6.1.7.
|
147
|
-
- bundle_lint_test:
|
148
|
-
name: ruby3-1_rails6-0
|
149
|
-
ruby_version: 3.1.3
|
150
|
-
rails_version: 6.0.6.1
|
151
|
-
# Ruby 3.0 releases
|
152
|
-
- bundle_lint_test:
|
153
|
-
name: ruby3-0_rails7-0
|
154
|
-
ruby_version: 3.0.5
|
155
|
-
rails_version: 7.0.4.1
|
156
|
-
- bundle_lint_test:
|
157
|
-
name: ruby3-0_rails6-1
|
158
|
-
ruby_version: 3.0.5
|
159
|
-
rails_version: 6.1.7.1
|
160
|
-
- bundle_lint_test:
|
161
|
-
name: ruby3-0_rails6-0
|
162
|
-
ruby_version: 3.0.5
|
163
|
-
rails_version: 6.0.6.1
|
164
|
-
# Ruby 2.7 releases
|
165
|
-
- bundle_lint_test:
|
166
|
-
name: ruby2-7_rails7-0
|
167
|
-
ruby_version: 2.7.7
|
168
|
-
rails_version: 7.0.4.1
|
169
|
-
- bundle_lint_test:
|
170
|
-
name: ruby2-7_rails6-1
|
171
|
-
ruby_version: 2.7.7
|
172
|
-
rails_version: 6.1.7.1
|
173
|
-
- bundle_lint_test:
|
174
|
-
name: ruby2-7_rails6-0
|
175
|
-
ruby_version: 2.7.7
|
176
|
-
rails_version: 6.0.6.1
|
177
|
-
- bundle_lint_test:
|
178
|
-
name: ruby2-7_rails5-2
|
179
|
-
ruby_version: 2.7.7
|
180
|
-
rails_version: 5.2.8.1
|
181
|
-
# Ruby 2.6 releases
|
182
|
-
- bundle_lint_test:
|
183
|
-
name: ruby2-6_rails6-0
|
184
|
-
ruby_version: 2.6.10
|
185
|
-
rails_version: 6.0.6.1
|
186
|
-
- bundle_lint_test:
|
187
|
-
name: ruby2-6_rails5-2
|
188
|
-
ruby_version: 2.6.10
|
189
|
-
rails_version: 5.2.8.1
|
178
|
+
ruby_version: 3.1.6
|
179
|
+
rails_version: 6.1.7.8
|
data/active-fedora.gemspec
CHANGED
@@ -16,13 +16,14 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.metadata = { "rubygems_mfa_required" => "true" }
|
17
17
|
s.required_ruby_version = '>= 2.6'
|
18
18
|
|
19
|
-
s.add_dependency "activemodel", '>=
|
20
|
-
s.add_dependency "activesupport", '>=
|
19
|
+
s.add_dependency "activemodel", '>= 6.1'
|
20
|
+
s.add_dependency "activesupport", '>= 6.1'
|
21
21
|
s.add_dependency "active-triples", '>= 0.11.0', '< 2.0.0'
|
22
22
|
s.add_dependency "deprecation"
|
23
23
|
s.add_dependency 'faraday', '>= 1.0'
|
24
24
|
s.add_dependency 'faraday-encoding', '>= 0.0.5'
|
25
25
|
s.add_dependency "ldp", '>= 0.7.0', '< 2'
|
26
|
+
s.add_dependency "mutex_m"
|
26
27
|
s.add_dependency 'rsolr', '>= 1.1.2', '< 3'
|
27
28
|
s.add_dependency "ruby-progressbar", '~> 1.0'
|
28
29
|
|
@@ -4,23 +4,25 @@ module ActiveFedora
|
|
4
4
|
module ClassMethods
|
5
5
|
protected
|
6
6
|
|
7
|
-
def define_method_attribute(
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
7
|
+
def define_method_attribute(canonical_name, owner: nil, as: canonical_name)
|
8
|
+
ActiveModel::AttributeMethods::AttrNames.define_attribute_accessor_method(
|
9
|
+
owner, canonical_name
|
10
|
+
) do |temp_method_name, attr_name_expr|
|
11
|
+
# rubocop:disable Style/LineEndConcatenation
|
12
|
+
if ActiveModel.version >= Gem::Version.new('7.0.0')
|
13
|
+
owner.define_cached_method(temp_method_name, as: as, namespace: :active_fedora) do |batch|
|
14
|
+
batch <<
|
15
|
+
"def #{temp_method_name}" <<
|
16
|
+
" _read_attribute(#{attr_name_expr}) { |n| missing_attribute(n, caller) }" <<
|
17
|
+
"end"
|
18
|
+
end
|
19
|
+
else
|
20
|
+
owner <<
|
21
|
+
"def #{temp_method_name}" <<
|
22
|
+
" _read_attribute(#{attr_name_expr}) { |n| missing_attribute(n, caller) }" <<
|
23
|
+
"end"
|
18
24
|
end
|
19
|
-
|
20
|
-
|
21
|
-
generated_attribute_methods.module_eval do
|
22
|
-
alias_method name, temp_method
|
23
|
-
undef_method temp_method
|
25
|
+
# rubocop:enable Style/LineEndConcatenation
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
@@ -4,19 +4,26 @@ module ActiveFedora
|
|
4
4
|
module ClassMethods
|
5
5
|
protected
|
6
6
|
|
7
|
-
def define_method_attribute=(
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
7
|
+
def define_method_attribute=(canonical_name, owner: nil, as: canonical_name)
|
8
|
+
ActiveModel::AttributeMethods::AttrNames.define_attribute_accessor_method(
|
9
|
+
owner, canonical_name, writer: true
|
10
|
+
) do |temp_method_name, attr_name_expr|
|
11
|
+
# rubocop:disable Style/LineEndConcatenation
|
12
|
+
if ActiveModel.version >= Gem::Version.new('7.0.0')
|
13
|
+
owner.define_cached_method(temp_method_name, as: "#{as}=", namespace: :active_fedora) do |batch|
|
14
|
+
batch <<
|
15
|
+
"def #{temp_method_name}(value)" <<
|
16
|
+
" write_attribute(#{attr_name_expr}, value)" <<
|
17
|
+
"end"
|
18
|
+
end
|
19
|
+
else
|
20
|
+
owner <<
|
21
|
+
"def #{temp_method_name}(value)" <<
|
22
|
+
" write_attribute(#{attr_name_expr}, value)" <<
|
23
|
+
"end"
|
16
24
|
end
|
17
|
-
|
18
|
-
|
19
|
-
STR
|
25
|
+
# rubocop:enable Style/LineEndConcatenation
|
26
|
+
end
|
20
27
|
end
|
21
28
|
end
|
22
29
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'active_support/core_ext/object'
|
2
2
|
require 'active_support/core_ext/class/attribute'
|
3
|
+
require 'mutex_m'
|
3
4
|
|
4
5
|
module ActiveFedora
|
5
6
|
module AttributeMethods
|
@@ -13,7 +14,7 @@ module ActiveFedora
|
|
13
14
|
end
|
14
15
|
end
|
15
16
|
|
16
|
-
|
17
|
+
RESTRICTED_CLASS_METHODS = %w[private public protected allocate new name parent superclass].freeze
|
17
18
|
|
18
19
|
class GeneratedAttributeMethods < Module; end # :nodoc:
|
19
20
|
|
@@ -80,7 +81,7 @@ module ActiveFedora
|
|
80
81
|
# A class method is 'dangerous' if it is already (re)defined by Active Record, but
|
81
82
|
# not by any ancestors. (So 'puts' is not dangerous but 'new' is.)
|
82
83
|
def dangerous_class_method?(method_name)
|
83
|
-
|
84
|
+
RESTRICTED_CLASS_METHODS.include?(method_name.to_s) || class_method_defined_within?(method_name, Base)
|
84
85
|
end
|
85
86
|
|
86
87
|
def class_method_defined_within?(name, klass, superklass = klass.superclass) # :nodoc:
|
@@ -176,7 +177,7 @@ module ActiveFedora
|
|
176
177
|
if value.is_a?(String) && value.length > 50
|
177
178
|
"#{value[0, 50]}...".inspect
|
178
179
|
elsif value.is_a?(Date) || value.is_a?(Time)
|
179
|
-
%("#{value.
|
180
|
+
%("#{value.to_formatted_s(:db)}")
|
180
181
|
elsif value.is_a?(Array) && value.size > 10
|
181
182
|
inspected = value.first(10).inspect
|
182
183
|
%(#{inspected[0...-1]}, ...])
|
@@ -5,6 +5,7 @@ module ActiveFedora
|
|
5
5
|
@odd = false
|
6
6
|
end
|
7
7
|
|
8
|
+
# rubocop:disable Style/IfInsideElse
|
8
9
|
def ldp(event)
|
9
10
|
return unless logger.debug?
|
10
11
|
|
@@ -13,15 +14,25 @@ module ActiveFedora
|
|
13
14
|
name = "#{payload[:name]} (#{event.duration.round(1)}ms)"
|
14
15
|
id = payload[:id] || "[no id]"
|
15
16
|
|
16
|
-
if
|
17
|
-
|
18
|
-
|
17
|
+
if ActiveSupport.version >= Gem::Version.new('7.1.0')
|
18
|
+
if odd?
|
19
|
+
name = color(name, CYAN, bold: true)
|
20
|
+
id = color(id, nil, bold: true)
|
21
|
+
else
|
22
|
+
name = color(name, MAGENTA, bold: true)
|
23
|
+
end
|
19
24
|
else
|
20
|
-
|
25
|
+
if odd?
|
26
|
+
name = color(name, CYAN, true)
|
27
|
+
id = color(id, nil, true)
|
28
|
+
else
|
29
|
+
name = color(name, MAGENTA, true)
|
30
|
+
end
|
21
31
|
end
|
22
32
|
|
23
33
|
debug " #{name} #{id} Service: #{payload[:ldp_service]}"
|
24
34
|
end
|
35
|
+
# rubocop:enable Style/IfInsideElse
|
25
36
|
|
26
37
|
def odd?
|
27
38
|
@odd = !@odd
|
@@ -7,32 +7,7 @@ module ActiveFedora
|
|
7
7
|
# may vary depending on the klass of a relation, so we create a subclass of Relation
|
8
8
|
# for each different klass, and the delegations are compiled into that subclass only.
|
9
9
|
|
10
|
-
|
11
|
-
:compact!, :flatten!, :reject!, :reverse!, :rotate!, :map!,
|
12
|
-
:shuffle!, :slice!, :sort!, :sort_by!, :delete_if,
|
13
|
-
:keep_if, :pop, :shift, :delete_at, :select!
|
14
|
-
].to_set
|
15
|
-
|
16
|
-
delegate :length, :map, :to_ary, to: :to_a
|
10
|
+
delegate :length, :map, :to_ary, :[], :&, :|, :+, :-, :sample, :reverse, :rotate, :compact, :shuffle, :slice, :index, :rindex, :size, to: :to_a
|
17
11
|
delegate :any?, :all?, :collect, :include?, to: :each
|
18
|
-
|
19
|
-
protected
|
20
|
-
|
21
|
-
def array_delegable?(method)
|
22
|
-
Array.method_defined?(method) && BLACKLISTED_ARRAY_METHODS.exclude?(method)
|
23
|
-
end
|
24
|
-
|
25
|
-
def method_missing(method, *args, &block)
|
26
|
-
if array_delegable?(method)
|
27
|
-
self.class.delegate method, to: :to_a
|
28
|
-
to_a.public_send(method, *args, &block)
|
29
|
-
else
|
30
|
-
super
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def respond_to_missing?(method, *args)
|
35
|
-
array_delegable?(method) || super
|
36
|
-
end
|
37
12
|
end
|
38
13
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'active_support/
|
1
|
+
require 'active_support/core_ext/module'
|
2
2
|
|
3
3
|
module ActiveFedora
|
4
4
|
module Scoping
|
@@ -66,37 +66,35 @@ module ActiveFedora
|
|
66
66
|
# ActiveFedora::Scoping::ScopeRegistry.set_value_for(:current_scope,
|
67
67
|
# Board, some_new_scope)
|
68
68
|
class ScopeRegistry # :nodoc:
|
69
|
-
extend ActiveSupport::PerThreadRegistry
|
70
|
-
|
71
69
|
VALID_SCOPE_TYPES = [:current_scope, :ignore_default_scope].freeze
|
72
70
|
|
73
|
-
|
74
|
-
|
71
|
+
thread_mattr_accessor :_registry
|
72
|
+
def self.registry
|
73
|
+
self._registry ||= Hash.new { |hash, key| hash[key] = {} }
|
75
74
|
end
|
76
75
|
|
77
76
|
# Obtains the value for a given +scope_type+ and +model+.
|
78
|
-
def value_for(scope_type, model)
|
77
|
+
def self.value_for(scope_type, model)
|
79
78
|
raise_invalid_scope_type!(scope_type)
|
80
79
|
klass = model
|
81
80
|
base = model.base_class
|
82
81
|
while klass <= base
|
83
|
-
value =
|
82
|
+
value = registry[scope_type][klass.name]
|
84
83
|
return value if value
|
85
84
|
klass = klass.superclass
|
86
85
|
end
|
87
86
|
end
|
88
87
|
|
89
88
|
# Sets the +value+ for a given +scope_type+ and +model+.
|
90
|
-
def set_value_for(scope_type, model, value)
|
89
|
+
def self.set_value_for(scope_type, model, value)
|
91
90
|
raise_invalid_scope_type!(scope_type)
|
92
|
-
|
91
|
+
registry[scope_type][model.name] = value
|
93
92
|
end
|
94
93
|
|
95
|
-
private
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
end
|
94
|
+
# @api private
|
95
|
+
def self.raise_invalid_scope_type!(scope_type)
|
96
|
+
raise ArgumentError, "Invalid scope type '#{scope_type}' sent to the registry. Scope types must be included in VALID_SCOPE_TYPES" unless VALID_SCOPE_TYPES.include?(scope_type)
|
97
|
+
end
|
100
98
|
end
|
101
99
|
end
|
102
100
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active-fedora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 15.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Zumwalt
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2024-10-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activemodel
|
@@ -18,28 +18,28 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
21
|
+
version: '6.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: '
|
28
|
+
version: '6.1'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: activesupport
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
33
|
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: '
|
35
|
+
version: '6.1'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
42
|
+
version: '6.1'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: active-triples
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - "<"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '2'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: mutex_m
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: rsolr
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -591,7 +605,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
591
605
|
- !ruby/object:Gem::Version
|
592
606
|
version: '0'
|
593
607
|
requirements: []
|
594
|
-
rubygems_version: 3.4.
|
608
|
+
rubygems_version: 3.4.10
|
595
609
|
signing_key:
|
596
610
|
specification_version: 4
|
597
611
|
summary: A convenience libary for manipulating documents in the Fedora Repository.
|