relaton 1.20.2 → 2.0.0.pre.alpha.1

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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/CLAUDE.md +4 -2
  4. data/Rakefile +1 -1
  5. data/bin/rspec +1 -2
  6. data/docs/README.adoc +93 -86
  7. data/lib/relaton/config.rb +2 -3
  8. data/lib/relaton/db.rb +57 -39
  9. data/lib/relaton/db_cache.rb +3 -2
  10. data/lib/relaton/registry.rb +23 -30
  11. data/lib/relaton/util.rb +2 -1
  12. data/lib/relaton/version.rb +1 -1
  13. data/lib/relaton/workers_pool.rb +1 -1
  14. data/lib/relaton.rb +6 -7
  15. data/relaton.gemspec +31 -31
  16. data/spec/relaton/db_cache_spec.rb +1 -1
  17. data/spec/relaton/db_spec.rb +84 -46
  18. data/spec/relaton/registry_spec.rb +43 -41
  19. data/spec/relaton/util_spec.rb +1 -0
  20. data/spec/relaton_spec.rb +345 -163
  21. data/spec/vcr_cassetes/3gpp_tr_00_01u_umts_3_0_0.yml +12595 -13226
  22. data/spec/vcr_cassetes/api_relaton_org.yml +7 -7
  23. data/spec/vcr_cassetes/api_relaton_org_unavailable.yml +76 -78
  24. data/spec/vcr_cassetes/cc_dir_10005_2019.yml +48 -42
  25. data/spec/vcr_cassetes/cie_001_1980.yml +302 -262
  26. data/spec/vcr_cassetes/cipm_meeting_43.yml +1380 -1370
  27. data/spec/vcr_cassetes/doi_10_6028_nist_ir_8245.yml +3 -3
  28. data/spec/vcr_cassetes/ecma_6.yml +182 -238
  29. data/spec/vcr_cassetes/en_10160_1999.yml +13083 -13122
  30. data/spec/vcr_cassetes/gb_t_20223_2006.yml +9 -9
  31. data/spec/vcr_cassetes/ieee_528_2019.yml +2633 -2411
  32. data/spec/vcr_cassetes/iso_19115_1.yml +13692 -13957
  33. data/spec/vcr_cassetes/iso_19115_1_2.yml +235 -244
  34. data/spec/vcr_cassetes/iso_19115_1_std.yml +13690 -13955
  35. data/spec/vcr_cassetes/iso_19115_all_parts.yml +161 -168
  36. data/spec/vcr_cassetes/iso_19133_2005.yml +83 -79
  37. data/spec/vcr_cassetes/iso_combined_applied.yml +239 -238
  38. data/spec/vcr_cassetes/iso_combined_included.yml +240 -239
  39. data/spec/vcr_cassetes/iso_dis.yml +87 -88
  40. data/spec/vcr_cassetes/ogc_19_025r1.yml +248 -243
  41. data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +268 -1513
  42. data/spec/vcr_cassetes/rfc_8341.yml +1090 -1086
  43. metadata +62 -80
  44. data/lib/relaton/processor.rb +0 -46
  45. data/spec/relaton/processor_spec.rb +0 -113
data/lib/relaton/db.rb CHANGED
@@ -28,13 +28,13 @@ module Relaton
28
28
  @db&.clear
29
29
  @local_db&.clear
30
30
  @registry.processors.each_value do |p|
31
- require p.short.to_s
32
31
  p.remove_index_file if p.respond_to? :remove_index_file
33
32
  end
34
33
  end
35
34
 
36
35
  ##
37
- # The class of reference requested is determined by the prefix of the reference:
36
+ # The class of reference requested is determined by the prefix
37
+ # of the reference:
38
38
  # GB Standard for gbbib, IETF for ietfbib, ISO for isobib, IEC or IEV for
39
39
  # iecbib,
40
40
  #
@@ -104,8 +104,10 @@ module Relaton
104
104
  # @param [String] year document yer
105
105
  # @param [Hash] opts options
106
106
  #
107
- # @return [RelatonBib::BibliographicItem, RelatonBib::RequestError, nil] bibitem if document is found,
108
- # request error if server doesn't answer, nil if document not found
107
+ # @return [RelatonBib::BibliographicItem,
108
+ # RelatonBib::RequestError, nil] bibitem if document is
109
+ # found, request error if server doesn't answer,
110
+ # nil if document not found
109
111
  #
110
112
  def fetch_async(ref, year = nil, opts = {}, &block) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
111
113
  stdclass = @registry.class_by_ref ref
@@ -115,13 +117,14 @@ module Relaton
115
117
  threads = ENV["RELATON_FETCH_PARALLEL"]&.to_i || processor.threads
116
118
  wp = WorkersPool.new(threads) do |args|
117
119
  args[3].call fetch(*args[0..2])
118
- rescue RelatonBib::RequestError => e
120
+ rescue Relaton::RequestError => e
119
121
  args[3].call e
120
122
  rescue StandardError => e
121
123
  Util.error "`#{args[0]}` -- #{e.message}"
122
124
  args[3].call nil
123
125
  end
124
- @queues[stdclass] = { queue: SizedQueue.new(threads * 2), workers_pool: wp }
126
+ @queues[stdclass] =
127
+ { queue: SizedQueue.new(threads * 2), workers_pool: wp }
125
128
  Thread.new { process_queue @queues[stdclass] }
126
129
  end
127
130
  @queues[stdclass][:queue] << [ref, year, opts, block]
@@ -194,7 +197,8 @@ module Relaton
194
197
  # @param (see #fetch_api)
195
198
  # @return (see #fetch_api)
196
199
  def fetch_doc(code, year, opts, processor)
197
- if Relaton.configuration.use_api then fetch_api(code, year, opts, processor)
200
+ if Relaton.configuration.use_api then fetch_api(code, year, opts,
201
+ processor)
198
202
  else processor.get(code, year, opts)
199
203
  end
200
204
  end
@@ -211,7 +215,8 @@ module Relaton
211
215
  # @param processor [Relaton::Processor]
212
216
  # @return [RelatonBib::BibliographicItem, nil]
213
217
  def fetch_api(code, year, opts, processor)
214
- url = "#{Relaton.configuration.api_host}/api/v1/document?#{params(code, year, opts)}"
218
+ url = "#{Relaton.configuration.api_host}" \
219
+ "/api/v1/document?#{params(code, year, opts)}"
215
220
  rsp = Net::HTTP.get_response URI(url)
216
221
  processor.from_xml rsp.body if rsp.code == "200"
217
222
  rescue Errno::ECONNREFUSED
@@ -238,7 +243,7 @@ module Relaton
238
243
  # @param year [Integer, nil] year to filter
239
244
  # @return [BibliographicItem, nil]
240
245
  def search_xml(file, xml, text, edition, year)
241
- return unless text.nil? || match_xml_text(xml, text)
246
+ return unless text.nil? || match_xml_text?(xml, text)
242
247
 
243
248
  search_edition_year(file, xml, edition, year)
244
249
  end
@@ -251,10 +256,12 @@ module Relaton
251
256
  def search_edition_year(file, content, edition, year) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
252
257
  processor = @registry.processor_by_ref(file.split("/")[-2])
253
258
  item = if file.match?(/xml$/) then processor.from_xml(content)
254
- else processor.hash_to_bib(YAML.safe_load(content))
259
+ else processor.from_yaml(content)
255
260
  end
256
261
  item if (edition.nil? || item.edition.content == edition) && (year.nil? ||
257
- item.date.detect { |d| d.type == "published" && d.on(:year).to_s == year.to_s })
262
+ item.date.detect do |d|
263
+ d.type == "published" && d.at.to_date.year.to_s == year.to_s
264
+ end)
258
265
  end
259
266
 
260
267
  #
@@ -265,8 +272,13 @@ module Relaton
265
272
  #
266
273
  # @return [Boolean]
267
274
  #
268
- def match_xml_text(xml, text)
269
- %r{((?<attr>=((?<apstr>')|"))|>).*?#{text}.*?(?(<attr>)(?(<apstr>)'|")|<)}mi.match?(xml)
275
+ def match_xml_text?(xml, text)
276
+ esc = Regexp.escape(text)
277
+ pat = "((?<attr>=((?<apstr>')|\"" \
278
+ "))|>).*?#{esc}" \
279
+ ".*?(?(<attr>)(?(<apstr>)'|\")|<)"
280
+ Regexp.new(pat, Regexp::MULTILINE | Regexp::IGNORECASE)
281
+ .match?(xml)
270
282
  end
271
283
 
272
284
  # @param code [String]
@@ -279,14 +291,8 @@ module Relaton
279
291
  # actual reference with year
280
292
  # @option opts [Integer] :retries (1) Number of network retries
281
293
  #
282
- # @return [nil, RelatonBib::BibliographicItem,
283
- # RelatonIsoBib::IsoBibliographicItem, RelatonItu::ItuBibliographicItem,
284
- # RelatonIetf::IetfBibliographicItem, RelatonIec::IecBibliographicItem,
285
- # RelatonIeee::IeeeBibliographicItem, RelatonNist::NistBibliongraphicItem,
286
- # RelatonGb::GbbibliographicItem, RelatonOgc::OgcBibliographicItem,
287
- # RelatonCalconnect::CcBibliographicItem, RelatinUn::UnBibliographicItem,
288
- # RelatonBipm::BipmBibliographicItem, RelatonIho::IhoBibliographicItem,
289
- # RelatonOmg::OmgBibliographicItem, RelatonW3c::W3cBibliographicItem]
294
+ # @return [nil, Relaton::Bib::ItemData
295
+ #
290
296
  def combine_doc(code, year, opts, stdclass) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
291
297
  return if stdclass == :relaton_bipm
292
298
 
@@ -295,21 +301,22 @@ module Relaton
295
301
  reldesc = nil
296
302
  elsif (refs = code.split ", ").size > 1
297
303
  reltype = "complements"
298
- reldesc = RelatonBib::FormattedString.new content: "amendment"
304
+ reldesc = Bib::LocalizedMarkedUpString.new content: "amendment"
299
305
  else return
300
306
  end
301
307
 
302
- doc = @registry[stdclass].hash_to_bib docid: { id: code }
308
+ yaml = { docidentifier: [{ content: code }] }.to_yaml
309
+ doc = @registry[stdclass].from_yaml(yaml)
303
310
  ref = refs[0]
304
311
  updates = check_bibliocache(refs[0], year, opts, stdclass)
305
312
  if updates
306
- doc.relation << RelatonBib::DocumentRelation.new(bibitem: updates, type: "updates")
313
+ doc.relation << Bib::Relation.new(bibitem: updates, type: "updates")
307
314
  end
308
315
  divider = stdclass == :relaton_itu ? " " : "/"
309
316
  refs[1..].each_with_object(doc) do |c, d|
310
317
  bib = check_bibliocache(ref + divider + c, year, opts, stdclass)
311
318
  if bib
312
- d.relation << RelatonBib::DocumentRelation.new(
319
+ d.relation << Bib::Relation.new(
313
320
  type: reltype, description: reldesc, bibitem: bib,
314
321
  )
315
322
  end
@@ -334,12 +341,10 @@ module Relaton
334
341
  ret = code
335
342
  ret += (stdclass == :relaton_gb ? "-" : ":") + year if year
336
343
  ret += " (all parts)" if opts[:all_parts]
337
- if opts[:publication_date_after]
338
- ret += " after-#{opts[:publication_date_after]}"
339
- end
340
- if opts[:publication_date_before]
341
- ret += " before-#{opts[:publication_date_before]}"
342
- end
344
+ after = opts[:publication_date_after]
345
+ ret += " after-#{after}" if after
346
+ before = opts[:publication_date_before]
347
+ ret += " before-#{before}" if before
343
348
  ["#{prefix}(#{ret.strip})", code]
344
349
  end
345
350
 
@@ -349,7 +354,11 @@ module Relaton
349
354
  # @return [Array]
350
355
  def strip_id_wrapper(code, stdclass)
351
356
  prefix = @registry[stdclass].prefix
352
- code = code.sub(/\u2013/, "-").sub(/^#{prefix}\((.+)\)$/, "\\1")
357
+ code =
358
+ if code.is_a?(String)
359
+ code.sub("\u2013", "-").sub(/^#{prefix}\((.+)\)$/, "\\1")
360
+ else code.to_s
361
+ end
353
362
  [prefix, code]
354
363
  end
355
364
 
@@ -461,7 +470,9 @@ module Relaton
461
470
  #
462
471
  def new_bib_entry(code, year, opts, stdclass, **args)
463
472
  entry = @semaphore.synchronize { args[:db] && args[:db][args[:id]] }
464
- return fetch_entry(code, year, opts, stdclass, **args) if !entry || opts[:no_cache]
473
+ if !entry || opts[:no_cache]
474
+ return fetch_entry(code, year, opts, stdclass, **args)
475
+ end
465
476
 
466
477
  if entry&.match?(/^not_found/)
467
478
  Util.info "not found in cache, if you wish to " \
@@ -484,7 +495,8 @@ module Relaton
484
495
 
485
496
  #
486
497
  # If the reference isn't equal to the document identifier
487
- # then store the document in the cache and create for the reference a redirection to the document
498
+ # then store the document in the cache and create
499
+ # for the reference a redirection to the document
488
500
  #
489
501
  # @param [<Type>] bib <description>
490
502
  # @param [<Type>] stdclass <description>
@@ -493,11 +505,13 @@ module Relaton
493
505
  # @return [<Type>] <description>
494
506
  #
495
507
  def check_entry(bib, stdclass, **args) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
496
- bib_id = bib&.docidentifier&.first&.id
508
+ bib_id = bib && bib.docidentifier.first&.content
497
509
 
498
510
  # when ref isn't equal to bib's id then return a redirection to bib's id
499
- if args[:db] && args[:id] && bib_id && args[:id] !~ %r{#{Regexp.quote("(#{bib_id})")}}
500
- bid = std_id(bib.docidentifier.first.id, nil, {}, stdclass).first
511
+ quoted = Regexp.quote("(#{bib_id})")
512
+ if args[:db] && args[:id] && bib_id &&
513
+ args[:id] !~ /#{quoted}/
514
+ bid = std_id(bib.docidentifier.first.content, nil, {}, stdclass).first
501
515
  @semaphore.synchronize { args[:db][bid] ||= bib_entry bib }
502
516
  "redirection #{bid}"
503
517
  else bib_entry bib
@@ -521,7 +535,7 @@ module Relaton
521
535
  #
522
536
  def net_retry(code, year, opts, processor, retries)
523
537
  fetch_doc code, year, opts, processor
524
- rescue RelatonBib::RequestError => e
538
+ rescue Relaton::RequestError => e
525
539
  raise e unless retries > 1
526
540
 
527
541
  net_retry(code, year, opts, processor, retries - 1)
@@ -537,7 +551,11 @@ module Relaton
537
551
  # RelatonOmg::OmgBibliographicItem, RelatonW3c::W3cBibliographicItem]
538
552
  # @return [String] XML or "not_found mm-dd-yyyy"
539
553
  def bib_entry(bib)
540
- bib.respond_to?(:to_xml) ? bib.to_xml(bibdata: true) : "not_found #{Date.today}"
554
+ if bib.respond_to?(:to_xml)
555
+ bib.to_xml(bibdata: true)
556
+ else
557
+ "not_found #{Date.today}"
558
+ end
541
559
  end
542
560
 
543
561
  # Check if an XML entry's published date falls within the requested range.
@@ -101,7 +101,7 @@ module Relaton
101
101
  # Returns all items
102
102
  # @return [Array<String>]
103
103
  def all(&block)
104
- Dir.glob("#{@dir}/**/*.{xml,yml,yaml}").sort.map do |f|
104
+ Dir.glob("#{@dir}/**/*.{xml,yml,yaml}").map do |f|
105
105
  content = File.read(f, encoding: "utf-8")
106
106
  block ? yield(f, content) : content
107
107
  end
@@ -168,7 +168,8 @@ module Relaton
168
168
  def filename(key)
169
169
  prefcode = key.downcase.match(/^(?<prefix>[^(]+)\((?<code>[^)]+)/)
170
170
  fn = if prefcode
171
- "#{prefcode[:prefix]}/#{prefcode[:code].gsub(/[:\s\/()]/, '_').squeeze('_')}"
171
+ "#{prefcode[:prefix]}/#{prefcode[:code].gsub(/[:\s\/()]/,
172
+ '_').squeeze('_')}"
172
173
  else
173
174
  key.gsub(/[-:\s]/, "_")
174
175
  end
@@ -1,16 +1,18 @@
1
1
  require "singleton"
2
2
 
3
- class Error < StandardError
4
- end
3
+ # class Error < StandardError
4
+ # end
5
5
 
6
6
  module Relaton
7
7
  class Registry
8
8
  SUPPORTED_GEMS = %w[
9
- relaton_gb relaton_iec relaton_ietf relaton_iso relaton_itu relaton_nist
10
- relaton_ogc relaton_calconnect relaton_omg relaton_un relaton_w3c
11
- relaton_ieee relaton_iho relaton_bipm relaton_ecma relaton_cie relaton_bsi
12
- relaton_cen relaton_iana relaton_3gpp relaton_oasis relaton_doi relaton_jis
13
- relaton_xsf relaton_ccsds relaton_etsi relaton_isbn relaton/plateau
9
+ relaton/gb relaton/iec relaton/ietf relaton/iso
10
+ relaton/itu relaton/nist relaton/ogc relaton/calconnect
11
+ relaton/omg relaton/un relaton/w3c relaton/ieee
12
+ relaton/iho relaton/bipm relaton/ecma relaton/cie
13
+ relaton/bsi relaton/cen relaton/iana relaton/3gpp
14
+ relaton/oasis relaton/doi relaton/jis relaton/xsf
15
+ relaton/ccsds relaton/etsi relaton/isbn relaton/plateau
14
16
  ].freeze
15
17
 
16
18
  include Singleton
@@ -27,14 +29,15 @@ module Relaton
27
29
 
28
30
  SUPPORTED_GEMS.each do |b|
29
31
  require "#{b}/processor"
30
- register Kernel.const_get "#{camel_case(b)}::Processor"
32
+ register Kernel.const_get "#{gem_to_module_path(b)}::Processor"
31
33
  rescue LoadError => e
32
- Util.error "backend #{b} not present\n#{e.message}\n#{e.backtrace.join "\n"}"
34
+ Util.error "backend #{b} not present\n" \
35
+ "#{e.message}\n#{e.backtrace.join "\n"}"
33
36
  end
34
37
  end
35
38
 
36
39
  def register(processor)
37
- raise Error unless processor < ::Relaton::Processor
40
+ raise Error unless processor < Core::Processor
38
41
 
39
42
  p = processor.new
40
43
  return if processors[p.short]
@@ -57,33 +60,23 @@ module Relaton
57
60
  #
58
61
  # @param [String] dataset
59
62
  #
60
- # @return [Relaton::Processor, nil]
63
+ # @return [Relaton::Core::Processor, nil]
61
64
  #
62
65
  def find_processor_by_dataset(dataset)
63
- require_gem(processors.values.detect { |p| p.datasets&.include? dataset })
66
+ processors.values.detect { |p| p.datasets&.include? dataset }
64
67
  end
65
68
 
66
69
  #
67
70
  # Find processor by type
68
71
  #
69
72
  # @param type [String]
70
- # @return [RelatonIso::Processor, RelatonIec::Processor,
71
- # RelatonNist::Processor, RelatonIetf::Processot, RelatonItu::Processor,
72
- # RelatonGb::Processor, RelatonOgc::Processor,
73
- # RelatonCalconnect::Processor]
73
+ # @return [Relaton::Core::Processor]
74
74
  def by_type(type)
75
- require_gem(processors.values.detect { |v| v.prefix == type&.upcase })
75
+ processors.values.detect { |v| v.prefix == type&.upcase }
76
76
  end
77
77
 
78
78
  def [](stdclass)
79
- require_gem processors[stdclass]
80
- end
81
-
82
- def require_gem(processor)
83
- return unless processor
84
-
85
- require processor.short.to_s
86
- processor
79
+ processors[stdclass]
87
80
  end
88
81
 
89
82
  #
@@ -91,10 +84,10 @@ module Relaton
91
84
  #
92
85
  # @param [String] ref reference or prefix
93
86
  #
94
- # @return [Relaton::Processor] processor
87
+ # @return [Relaton::Core::Processor] processor
95
88
  #
96
89
  def processor_by_ref(ref)
97
- require_gem processors[class_by_ref(ref)]
90
+ processors[class_by_ref(ref)]
98
91
  end
99
92
 
100
93
  #
@@ -105,7 +98,7 @@ module Relaton
105
98
  # @return [Symbol, nil] standard class name
106
99
  #
107
100
  def class_by_ref(ref)
108
- ref = ref =~ /^\w+\((.*)\)$/ ? Regexp.last_match(1) : ref
101
+ ref = Regexp.last_match(1) if ref =~ /^\w+\((.*)\)$/
109
102
  @processors.each do |class_name, processor|
110
103
  return class_name if /^(urn:)?#{processor.prefix}\b/i.match?(ref) ||
111
104
  processor.defaultprefix.match(ref)
@@ -116,9 +109,9 @@ module Relaton
116
109
 
117
110
  private
118
111
 
119
- def camel_case(gem_name)
112
+ def gem_to_module_path(gem_name)
120
113
  gem_name.split("/").map do |part|
121
- part.split("_").map(&:capitalize).join
114
+ part.capitalize.sub("3gpp", "ThreeGpp")
122
115
  end.join("::")
123
116
  end
124
117
  end
data/lib/relaton/util.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  module Relaton
2
2
  module Util
3
- extend RelatonBib::Util
3
+ extend Relaton::Bib::Util
4
+
4
5
  PROGNAME = "relaton".freeze
5
6
  end
6
7
  end
@@ -1,3 +1,3 @@
1
1
  module Relaton
2
- VERSION = "1.20.2".freeze
2
+ VERSION = "2.0.0-alpha.1".freeze
3
3
  end
@@ -3,7 +3,7 @@
3
3
  module Relaton
4
4
  # Workers poll.
5
5
  class WorkersPool
6
- def initialize(workers = 2, &_block)
6
+ def initialize(workers = 2, &)
7
7
  # num_workers = workers < 2 ? 2 : workers
8
8
  @queue = SizedQueue.new(workers * 2)
9
9
  @threads = Array.new workers do
data/lib/relaton.rb CHANGED
@@ -1,11 +1,10 @@
1
- require "relaton_bib"
1
+ require "relaton/bib"
2
2
  require "relaton/util"
3
3
  require "relaton/config"
4
4
  require "yaml"
5
5
 
6
- require "relaton/workers_pool"
7
- require "relaton/db"
8
- require "relaton/db_cache"
9
- require "relaton/version"
10
- require "relaton/registry"
11
- require "relaton/processor"
6
+ require_relative "relaton/workers_pool"
7
+ require_relative "relaton/db"
8
+ require_relative "relaton/db_cache"
9
+ require_relative "relaton/version"
10
+ require_relative "relaton/registry"
data/relaton.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.authors = ["Ribose Inc."]
11
11
  spec.email = ["open.source@ribose.com"]
12
12
 
13
- spec.summary = "The Relaton core for importing, managing and caching "\
13
+ spec.summary = "The Relaton core for importing, managing and caching " \
14
14
  "bibliographic references to technical standards."
15
15
  spec.description = <<~DESCRIPTION
16
16
  The Relaton core for importing, managing and caching bibliographic
@@ -27,35 +27,35 @@ Gem::Specification.new do |spec|
27
27
  spec.require_paths = ["lib"]
28
28
  spec.files = `git ls-files`.split("\n")
29
29
  # spec.test_files = `git ls-files -- {spec}/*`.split("\n")
30
- spec.required_ruby_version = Gem::Requirement.new(">= 3.1.0")
30
+ spec.required_ruby_version = Gem::Requirement.new(">= 3.2.0")
31
31
 
32
- spec.add_dependency "relaton-3gpp", "~> 1.20.0"
33
- spec.add_dependency "relaton-bipm", "~> 1.20.0"
34
- spec.add_dependency "relaton-bsi", "~> 1.20.0"
35
- spec.add_dependency "relaton-calconnect", "~> 1.20.0"
36
- spec.add_dependency "relaton-ccsds", "~> 1.20.2"
37
- spec.add_dependency "relaton-cen", "~> 1.20.0"
38
- spec.add_dependency "relaton-cie", "~> 1.20.0"
39
- spec.add_dependency "relaton-doi", "~> 1.20.0"
40
- spec.add_dependency "relaton-ecma", "~> 1.20.0"
41
- spec.add_dependency "relaton-etsi", "~> 1.20.0"
42
- spec.add_dependency "relaton-gb", "~> 1.20.0"
43
- spec.add_dependency "relaton-iana", "~> 1.20.0"
44
- spec.add_dependency "relaton-iec", "~> 1.20.3"
45
- spec.add_dependency "relaton-ieee", "~> 1.20.0"
46
- spec.add_dependency "relaton-ietf", "~> 1.20.0"
47
- spec.add_dependency "relaton-iho", "~> 1.20.0"
48
- spec.add_dependency "relaton-isbn", "~> 1.20.0"
49
- spec.add_dependency "relaton-iso", "~> 1.20.0"
50
- spec.add_dependency "relaton-itu", "~> 1.20.0"
51
- spec.add_dependency "relaton-jis", "~> 1.20.0"
52
- spec.add_dependency "relaton-nist", "~> 1.20.0"
53
- spec.add_dependency "relaton-oasis", "~> 1.20.0"
54
- spec.add_dependency "relaton-ogc", "~> 1.20.0"
55
- spec.add_dependency "relaton-omg", "~> 1.20.0"
56
- spec.add_dependency "relaton-plateau", "~> 1.20.0"
57
- spec.add_dependency "relaton-un", "~> 1.20.0"
58
- spec.add_dependency "relaton-w3c", "~> 1.20.0"
59
- spec.add_dependency "relaton-xsf", "~> 1.20.0"
60
- spec.add_development_dependency "rubocop-rails"
32
+ spec.add_dependency "relaton-3gpp", "~> 2.0.0-alpha.3"
33
+ spec.add_dependency "relaton-bipm", "~> 2.0.0-alpha.2"
34
+ spec.add_dependency "relaton-bsi", "~> 2.0.0-alpha.1"
35
+ spec.add_dependency "relaton-calconnect", "~> 2.0.0-alpha.2"
36
+ spec.add_dependency "relaton-ccsds", "~> 2.0.0-alpha.2"
37
+ spec.add_dependency "relaton-cen", "~> 2.0.0-alpha.1"
38
+ spec.add_dependency "relaton-cie", "~> 2.0.0-alpha.2"
39
+ spec.add_dependency "relaton-doi", "~> 2.0.0-alpha.1"
40
+ spec.add_dependency "relaton-ecma", "~> 2.0.0-alpha.2"
41
+ spec.add_dependency "relaton-etsi", "~> 2.0.0-alpha.2"
42
+ spec.add_dependency "relaton-gb", "~> 2.0.0-alpha.1"
43
+ spec.add_dependency "relaton-iana", "~> 2.0.0-alpha.2"
44
+ spec.add_dependency "relaton-iec", "~> 2.0.0-alpha.2"
45
+ spec.add_dependency "relaton-ieee", "~> 2.0.0-alpha.1"
46
+ spec.add_dependency "relaton-ietf", "~> 2.0.0-alpha.2"
47
+ spec.add_dependency "relaton-iho", "~> 2.0.0-alpha.2"
48
+ spec.add_dependency "relaton-isbn", "~> 2.0.0-alpha.1"
49
+ spec.add_dependency "relaton-iso", "~> 2.0.0-alpha.2"
50
+ spec.add_dependency "relaton-itu", "~> 2.0.0-alpha.2"
51
+ spec.add_dependency "relaton-jis", "~> 2.0.0-alpha.1"
52
+ spec.add_dependency "relaton-nist", "~> 2.0.0-alpha.2"
53
+ spec.add_dependency "relaton-oasis", "~> 2.0.0-alpha.2"
54
+ spec.add_dependency "relaton-ogc", "~> 2.0.0-alpha.2"
55
+ spec.add_dependency "relaton-omg", "~> 2.0.0-alpha.1"
56
+ spec.add_dependency "relaton-plateau", "~> 2.0.0-alpha.1"
57
+ spec.add_dependency "relaton-un", "~> 2.0.0-alpha.1"
58
+ spec.add_dependency "relaton-w3c", "~> 2.0.0-alpha.2"
59
+ spec.add_dependency "relaton-xsf", "~> 2.0.0-alpha.1"
60
+ spec.metadata["rubygems_mfa_required"] = "true"
61
61
  end
@@ -18,7 +18,7 @@ RSpec.describe Relaton::DbCache do
18
18
  dir = "testcache/iso"
19
19
  FileUtils.mkdir_p dir
20
20
  file_name = File.join dir, "iso_123.xml"
21
- file = File.open file_name, File::RDWR | File::CREAT, encoding: "UTF-8"
21
+ file = File.open(file_name, File::RDWR | File::CREAT, encoding: "UTF-8") # rubocop:disable Style/FileOpen
22
22
  file.flock File::LOCK_EX
23
23
  command = <<~RBY
24
24
  require "relaton"