relaton 3.0.0.pre.alpha.9 → 3.0.0.pre.alpha.11
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 +4 -4
- data/lib/relaton/db/cache.rb +37 -0
- data/lib/relaton/version.rb +1 -1
- metadata +12 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7364dc37a276ca9af4698a8c2dfccca8a38c4b8fe02718d0a48938ae0c50e68e
|
|
4
|
+
data.tar.gz: 5129ad6ec6692247d87022f7774edc9b8f0bac4cc2668309ffc87302e75af3eb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7ac0f564a402d64872ac1261ae71c733e3bffc6b5f0755e846358df24c27ec6cbc1b9b2a7fe4090d7d57d65f384a85d5fffd7a07865307a3bcbb6905070df778
|
|
7
|
+
data.tar.gz: f2c3876e14d876d5b172e7ecd1b65d3b1a100c2716fce4ee5628984f23ce5c4b5203b847f3a56cc6b222bd0866dca2f87483c92ad2538488781c48fed778d1f6
|
data/lib/relaton/db/cache.rb
CHANGED
|
@@ -3,6 +3,7 @@ require "digest"
|
|
|
3
3
|
require "json"
|
|
4
4
|
require "date"
|
|
5
5
|
require "lutaml/store"
|
|
6
|
+
require "nokogiri"
|
|
6
7
|
require_relative "cache_entry"
|
|
7
8
|
|
|
8
9
|
module Relaton
|
|
@@ -52,6 +53,7 @@ module Relaton
|
|
|
52
53
|
archive_old_layout
|
|
53
54
|
open_stores
|
|
54
55
|
check_versions
|
|
56
|
+
import_old_layout
|
|
55
57
|
end
|
|
56
58
|
|
|
57
59
|
# Move the cache to another directory.
|
|
@@ -308,6 +310,41 @@ module Relaton
|
|
|
308
310
|
Util.info "cache #{dir}: the old cache is moved to #{bak}"
|
|
309
311
|
end
|
|
310
312
|
|
|
313
|
+
# Entries the file-per-key layout cached are imported into the v2
|
|
314
|
+
# stores once, so upgrading does not silently refetch them (relaton#240).
|
|
315
|
+
# A key the v2 cache already holds keeps its fresher entry; not-found
|
|
316
|
+
# and redirection entries are not imported (a negative lookup costs one
|
|
317
|
+
# fetch, and redirects were dropped from the v2 model).
|
|
318
|
+
def import_old_layout
|
|
319
|
+
bak = "#{dir}-v1.bak"
|
|
320
|
+
marker = File.join(dir, LAYOUT, ".v1-imported")
|
|
321
|
+
return if File.exist?(marker) || !Dir.exist?(bak)
|
|
322
|
+
|
|
323
|
+
imported = 0
|
|
324
|
+
Dir.glob("#{bak}/**/*.xml").each do |f|
|
|
325
|
+
value = File.read(f, encoding: "utf-8")
|
|
326
|
+
key = old_layout_key(f.delete_prefix("#{bak}/"), value) or next
|
|
327
|
+
next if lookup(key)
|
|
328
|
+
|
|
329
|
+
self[key] = value
|
|
330
|
+
imported += 1
|
|
331
|
+
end
|
|
332
|
+
FileUtils.touch marker
|
|
333
|
+
Util.info "cache #{dir}: imported #{imported} entries from #{bak}"
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
# The wrapped string key of an old-layout document: its own primary
|
|
337
|
+
# docidentifier under its flavor prefix, resolved through the same
|
|
338
|
+
# `wrapped_key` path a string cache read takes.
|
|
339
|
+
def old_layout_key(path, value)
|
|
340
|
+
flavor = path.split("/").first or return
|
|
341
|
+
doc = Nokogiri::XML(value)
|
|
342
|
+
id = doc.root&.at("./docidentifier[@primary = 'true']") ||
|
|
343
|
+
doc.root&.at("./docidentifier") or return
|
|
344
|
+
|
|
345
|
+
"#{flavor.upcase}(#{id.text.strip})"
|
|
346
|
+
end
|
|
347
|
+
|
|
311
348
|
# Drop the rows and documents of a flavor whose grammar changed since
|
|
312
349
|
# they were written.
|
|
313
350
|
def check_versions
|
data/lib/relaton/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: relaton
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.0.0.pre.alpha.
|
|
4
|
+
version: 3.0.0.pre.alpha.11
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-10-
|
|
11
|
+
date: 2026-10-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: addressable
|
|
@@ -468,16 +468,22 @@ dependencies:
|
|
|
468
468
|
name: relaton-render
|
|
469
469
|
requirement: !ruby/object:Gem::Requirement
|
|
470
470
|
requirements:
|
|
471
|
-
- - "
|
|
471
|
+
- - ">="
|
|
472
|
+
- !ruby/object:Gem::Version
|
|
473
|
+
version: 3.0.0.pre.alpha.1
|
|
474
|
+
- - "<"
|
|
472
475
|
- !ruby/object:Gem::Version
|
|
473
|
-
version:
|
|
476
|
+
version: '4'
|
|
474
477
|
type: :runtime
|
|
475
478
|
prerelease: false
|
|
476
479
|
version_requirements: !ruby/object:Gem::Requirement
|
|
477
480
|
requirements:
|
|
478
|
-
- - "
|
|
481
|
+
- - ">="
|
|
482
|
+
- !ruby/object:Gem::Version
|
|
483
|
+
version: 3.0.0.pre.alpha.1
|
|
484
|
+
- - "<"
|
|
479
485
|
- !ruby/object:Gem::Version
|
|
480
|
-
version:
|
|
486
|
+
version: '4'
|
|
481
487
|
- !ruby/object:Gem::Dependency
|
|
482
488
|
name: rfcxml
|
|
483
489
|
requirement: !ruby/object:Gem::Requirement
|