speedy-af 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0ff0f3d554f80151433f700cfae02d61d3c271fbcfb1cefe132d8a9e0e518734
4
- data.tar.gz: 01433ba5beca3308fa708191c76a2be9df2b5682be1ae41a3dc08f6ad6dd42af
3
+ metadata.gz: c72484eda4b8aab6cfd7f24213b6dcd6a3d1b726c59d106a2257d3932a7b7a10
4
+ data.tar.gz: 7fb4b39977497770a3bd35bff2a57ac8149ff1a233dc7f1594ea881eece9d9e1
5
5
  SHA512:
6
- metadata.gz: '09e918cd65f5a0ee8a1cf5365f268f68fb265c39da957265598cfd8fa1c363ce5447b0523b7e938264505f49ac420e80af38c331390fb8c547eb5621a519e3d8'
7
- data.tar.gz: e900999b19accf9c9d35c8b33480bfdd32b79375c34bd9d8108bfaf92105d67984aafdcb2b8196906d91ccb3aa7357ae5f8de373b1162898406fca6e8f378c1a
6
+ metadata.gz: 75fdd0cde86d2f9a7dc7ea821c03eb24011245a6af1a11d5cb52e246d4514ee33bbd502ab1146001ff25c81b3ff7e0773f1fce82ab20292b76f717d48183d382
7
+ data.tar.gz: 9b88e5a9d6a97e41610a950cb0bd57c981ad85577ca59fa31906f87c73ed2ac536acdfe914a426e56f9e9c5404e57c3e484288ed2c3dc0dfefe3f6e8a86dd4d4
data/.circleci/config.yml CHANGED
@@ -37,31 +37,23 @@ jobs:
37
37
  workflows:
38
38
  ci:
39
39
  jobs:
40
+ - bundle_and_test:
41
+ name: "ruby4-0_rails8-1"
42
+ ruby_version: "4.0.2"
43
+ rails_version: "8.1.3"
44
+ - bundle_and_test:
45
+ name: "ruby4-0_rails8-0"
46
+ ruby_version: "4.0.2"
47
+ rails_version: "8.0.5"
40
48
  - bundle_and_test:
41
49
  name: "ruby3-4_rails8-0"
42
- ruby_version: "3.4.5"
43
- rails_version: "8.0.1"
50
+ ruby_version: "3.4.9"
51
+ rails_version: "8.0.5"
44
52
  - bundle_and_test:
45
53
  name: "ruby3-3_rails8-0"
46
- ruby_version: "3.3.4"
47
- rails_version: "8.0.1"
54
+ ruby_version: "3.3.11"
55
+ rails_version: "8.0.5"
48
56
  - bundle_and_test:
49
57
  name: "ruby3-3_rails7-2"
50
- ruby_version: "3.3.4"
51
- rails_version: "7.2.1"
52
- - bundle_and_test:
53
- name: "ruby3-2_rails7-1"
54
- ruby_version: "3.2.5"
55
- rails_version: "7.1.4"
56
- - bundle_and_test:
57
- name: "ruby3-1_rails7-1"
58
- ruby_version: "3.1.6"
59
- rails_version: "7.1.4"
60
- - bundle_and_test:
61
- name: "ruby3-2_rails7-0"
62
- ruby_version: "3.2.5"
63
- rails_version: "7.0.8.4"
64
- - bundle_and_test:
65
- name: "ruby3-1_rails7-0"
66
- ruby_version: "3.1.6"
67
- rails_version: "7.0.8.4"
58
+ ruby_version: "3.3.11"
59
+ rails_version: "7.2.3.1"
data/Gemfile CHANGED
@@ -6,3 +6,7 @@ gemspec
6
6
  gem 'byebug'
7
7
  gem 'pry-byebug' unless ENV['CI']
8
8
  gem 'psych', '< 4' # pinned to less than 4 due to ActiveFedora not specifying this restriction
9
+
10
+ # Workaround faraday and rdf issue in CI and dev environments
11
+ gem 'faraday', '>= 2.9.2'
12
+ gem 'rdf', '>= 3.3.2'
data/docker-compose.yml CHANGED
@@ -4,9 +4,11 @@ volumes:
4
4
 
5
5
  services:
6
6
  fedora:
7
- image: ghcr.io/samvera/fcrepo4:4.7.5
7
+ image: fcrepo/fcrepo:6.5.1-tomcat9
8
8
  volumes:
9
9
  - fedora:/data
10
+ environment:
11
+ - CATALINA_OPTS=-Dfcrepo.autoversioning.enabled=false
10
12
  ports:
11
13
  - '8986:8080'
12
14
 
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require 'ostruct'
3
+ require 'speedy_af/errors'
3
4
 
4
5
  module SpeedyAF
5
6
  class Base
@@ -42,7 +43,9 @@ module SpeedyAF
42
43
  end
43
44
 
44
45
  def find(id, opts = {})
45
- where(%(id:"#{id}"), opts.merge(rows: 1)).first
46
+ result = where(%(id:"#{id}"), opts.merge(rows: 1)).first
47
+ raise SpeedyAF::ModelMismatch if self != result.class && self != SpeedyAF::Base
48
+ result
46
49
  end
47
50
 
48
51
  def where(query, opts = {})
@@ -327,7 +330,7 @@ module SpeedyAF
327
330
 
328
331
  def load_belongs_to_reflection(reflection, ids_only = false)
329
332
  id = @attrs[reflection.predicate_for_solr.to_sym]
330
- return id.first if ids_only && Array(id).size == 1
333
+ return Array(id).first if ids_only && Array(id).size == 1
331
334
  return if id.blank?
332
335
  query = Array(id).collect { |i| "id:#{i}" }.join(" OR ")
333
336
  query = "(#{query}) AND has_model_ssim:#{reflection.class_name}"
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+ module SpeedyAF
3
+ class ProxyError < StandardError; end
4
+ class ModelMismatch < ProxyError; end
5
+ end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module SpeedyAF
3
- VERSION = '0.5.0'
3
+ VERSION = '0.6.0'
4
4
  end
@@ -0,0 +1,3 @@
1
+ {
2
+ "initArgs":{},
3
+ "managedList":[]}
@@ -0,0 +1,31 @@
1
+ <!--
2
+ Licensed to the Apache Software Foundation (ASF) under one or more
3
+ contributor license agreements. See the NOTICE file distributed with
4
+ this work for additional information regarding copyright ownership.
5
+ The ASF licenses this file to You under the Apache License, Version 2.0
6
+ (the "License"); you may not use this file except in compliance with
7
+ the License. You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+ -->
17
+
18
+ <!-- The content of this page will be statically included into the top
19
+ of the admin page. Uncomment this as an example to see there the content
20
+ will show up.
21
+
22
+ <hr>
23
+ <i>This line will appear before the first table</i>
24
+ <tr>
25
+ <td colspan="2">
26
+ This row will be appended to the end of the first table
27
+ </td>
28
+ </tr>
29
+ <hr>
30
+
31
+ -->
@@ -0,0 +1,36 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!--
3
+ Licensed to the Apache Software Foundation (ASF) under one or more
4
+ contributor license agreements. See the NOTICE file distributed with
5
+ this work for additional information regarding copyright ownership.
6
+ The ASF licenses this file to You under the Apache License, Version 2.0
7
+ (the "License"); you may not use this file except in compliance with
8
+ the License. You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ -->
18
+
19
+ <!-- If this file is found in the config directory, it will only be
20
+ loaded once at startup. If it is found in Solr's data
21
+ directory, it will be re-loaded every commit.
22
+ -->
23
+
24
+ <elevate>
25
+ <query text="foo bar">
26
+ <doc id="1" />
27
+ <doc id="2" />
28
+ <doc id="3" />
29
+ </query>
30
+
31
+ <query text="ipod">
32
+ <doc id="MA147LL/A" /> <!-- put the actual ipod at the top -->
33
+ <doc id="IW-02" exclude="true" /> <!-- exclude this cable -->
34
+ </query>
35
+
36
+ </elevate>
@@ -0,0 +1,246 @@
1
+ # The ASF licenses this file to You under the Apache License, Version 2.0
2
+ # (the "License"); you may not use this file except in compliance with
3
+ # the License. You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.
12
+
13
+ # Syntax:
14
+ # "source" => "target"
15
+ # "source".length() > 0 (source cannot be empty.)
16
+ # "target".length() >= 0 (target can be empty.)
17
+
18
+ # example:
19
+ # "??" => "A"
20
+ # "\u00C0" => "A"
21
+ # "\u00C0" => "\u0041"
22
+ # "??" => "ss"
23
+ # "\t" => " "
24
+ # "\n" => ""
25
+
26
+ # ?? => A
27
+ "\u00C0" => "A"
28
+
29
+ # ?? => A
30
+ "\u00C1" => "A"
31
+
32
+ # ?? => A
33
+ "\u00C2" => "A"
34
+
35
+ # ?? => A
36
+ "\u00C3" => "A"
37
+
38
+ # ?? => A
39
+ "\u00C4" => "A"
40
+
41
+ # ?? => A
42
+ "\u00C5" => "A"
43
+
44
+ # ?? => AE
45
+ "\u00C6" => "AE"
46
+
47
+ # ?? => C
48
+ "\u00C7" => "C"
49
+
50
+ # ?? => E
51
+ "\u00C8" => "E"
52
+
53
+ # ?? => E
54
+ "\u00C9" => "E"
55
+
56
+ # ?? => E
57
+ "\u00CA" => "E"
58
+
59
+ # ?? => E
60
+ "\u00CB" => "E"
61
+
62
+ # ?? => I
63
+ "\u00CC" => "I"
64
+
65
+ # ?? => I
66
+ "\u00CD" => "I"
67
+
68
+ # ?? => I
69
+ "\u00CE" => "I"
70
+
71
+ # ?? => I
72
+ "\u00CF" => "I"
73
+
74
+ # ?? => IJ
75
+ "\u0132" => "IJ"
76
+
77
+ # ?? => D
78
+ "\u00D0" => "D"
79
+
80
+ # ?? => N
81
+ "\u00D1" => "N"
82
+
83
+ # ?? => O
84
+ "\u00D2" => "O"
85
+
86
+ # ?? => O
87
+ "\u00D3" => "O"
88
+
89
+ # ?? => O
90
+ "\u00D4" => "O"
91
+
92
+ # ?? => O
93
+ "\u00D5" => "O"
94
+
95
+ # ?? => O
96
+ "\u00D6" => "O"
97
+
98
+ # ?? => O
99
+ "\u00D8" => "O"
100
+
101
+ # ?? => OE
102
+ "\u0152" => "OE"
103
+
104
+ # ??
105
+ "\u00DE" => "TH"
106
+
107
+ # ?? => U
108
+ "\u00D9" => "U"
109
+
110
+ # ?? => U
111
+ "\u00DA" => "U"
112
+
113
+ # ?? => U
114
+ "\u00DB" => "U"
115
+
116
+ # ?? => U
117
+ "\u00DC" => "U"
118
+
119
+ # ?? => Y
120
+ "\u00DD" => "Y"
121
+
122
+ # ?? => Y
123
+ "\u0178" => "Y"
124
+
125
+ # ?? => a
126
+ "\u00E0" => "a"
127
+
128
+ # ?? => a
129
+ "\u00E1" => "a"
130
+
131
+ # ?? => a
132
+ "\u00E2" => "a"
133
+
134
+ # ?? => a
135
+ "\u00E3" => "a"
136
+
137
+ # ?? => a
138
+ "\u00E4" => "a"
139
+
140
+ # ?? => a
141
+ "\u00E5" => "a"
142
+
143
+ # ?? => ae
144
+ "\u00E6" => "ae"
145
+
146
+ # ?? => c
147
+ "\u00E7" => "c"
148
+
149
+ # ?? => e
150
+ "\u00E8" => "e"
151
+
152
+ # ?? => e
153
+ "\u00E9" => "e"
154
+
155
+ # ?? => e
156
+ "\u00EA" => "e"
157
+
158
+ # ?? => e
159
+ "\u00EB" => "e"
160
+
161
+ # ?? => i
162
+ "\u00EC" => "i"
163
+
164
+ # ?? => i
165
+ "\u00ED" => "i"
166
+
167
+ # ?? => i
168
+ "\u00EE" => "i"
169
+
170
+ # ?? => i
171
+ "\u00EF" => "i"
172
+
173
+ # ?? => ij
174
+ "\u0133" => "ij"
175
+
176
+ # ?? => d
177
+ "\u00F0" => "d"
178
+
179
+ # ?? => n
180
+ "\u00F1" => "n"
181
+
182
+ # ?? => o
183
+ "\u00F2" => "o"
184
+
185
+ # ?? => o
186
+ "\u00F3" => "o"
187
+
188
+ # ?? => o
189
+ "\u00F4" => "o"
190
+
191
+ # ?? => o
192
+ "\u00F5" => "o"
193
+
194
+ # ?? => o
195
+ "\u00F6" => "o"
196
+
197
+ # ?? => o
198
+ "\u00F8" => "o"
199
+
200
+ # ?? => oe
201
+ "\u0153" => "oe"
202
+
203
+ # ?? => ss
204
+ "\u00DF" => "ss"
205
+
206
+ # ?? => th
207
+ "\u00FE" => "th"
208
+
209
+ # ?? => u
210
+ "\u00F9" => "u"
211
+
212
+ # ?? => u
213
+ "\u00FA" => "u"
214
+
215
+ # ?? => u
216
+ "\u00FB" => "u"
217
+
218
+ # ?? => u
219
+ "\u00FC" => "u"
220
+
221
+ # ?? => y
222
+ "\u00FD" => "y"
223
+
224
+ # ?? => y
225
+ "\u00FF" => "y"
226
+
227
+ # ??? => ff
228
+ "\uFB00" => "ff"
229
+
230
+ # ??? => fi
231
+ "\uFB01" => "fi"
232
+
233
+ # ??? => fl
234
+ "\uFB02" => "fl"
235
+
236
+ # ??? => ffi
237
+ "\uFB03" => "ffi"
238
+
239
+ # ??? => ffl
240
+ "\uFB04" => "ffl"
241
+
242
+ # ??? => ft
243
+ "\uFB05" => "ft"
244
+
245
+ # ??? => st
246
+ "\uFB06" => "st"
@@ -0,0 +1,21 @@
1
+ # The ASF licenses this file to You under the Apache License, Version 2.0
2
+ # (the "License"); you may not use this file except in compliance with
3
+ # the License. You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.
12
+
13
+ #-----------------------------------------------------------------------
14
+ # Use a protected word file to protect against the stemmer reducing two
15
+ # unrelated words to the same base word.
16
+
17
+ # Some non-words that normally won't be encountered,
18
+ # just to test that they won't be stemmed.
19
+ dontstems
20
+ zwhacky
21
+