relaton-index 0.2.16 → 0.2.18

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: 4108f8054c21d68ee61c745be7a61c9d35f1dfdc054b1bf3a98b0d3d4bbe7ce1
4
- data.tar.gz: 765718355ee7cb6182ef08513a2235be8efc45b4e2b086585c9ba6d7c7ff2006
3
+ metadata.gz: 4a0b0524d3ff48cefa5a45836a1a66752936d4c2f314c7b9a57ce57e66bf1188
4
+ data.tar.gz: a44c2069cead390088f0100ebcd79931fda7acf2c588e725f405af8338ee8d53
5
5
  SHA512:
6
- metadata.gz: 33a29690bd1296f6c44358a513d016ab433a34f89de508466d919b22a76f834d077a6fb5fb69579b694fcfd440458e53dd5931943c3bd8cb12d4f725509fe265
7
- data.tar.gz: 1f23d97956f434d7ceb76688da5086e7ee545c7685455f9964ece8db783f326f591a5d4ef984694ce09ee0cd6786fb63d8f24eff06875fc51157985bf8cfef63
6
+ metadata.gz: 2259a5c99d9be722cdde9970a9e8f9991ba9b54196e1309116d8cbdacecd02bf61f1cd46d5ec84b49248f7dc3c1b4c1a97d76060176e0da7fee707838a2b5027
7
+ data.tar.gz: 77a0daf08f996acba87a6c177bc04596dc552a1607b14b14edc4964b32280afa89d6bbec6aef501796aae0a5de37cd72d12bff891427f56ea2f96fbf43b4a242
data/.rubocop.yml CHANGED
@@ -7,6 +7,6 @@ require: rubocop-rails
7
7
  inherit_from:
8
8
  - https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
9
9
  AllCops:
10
- TargetRubyVersion: 2.7
10
+ TargetRubyVersion: 3.1
11
11
  Rails:
12
12
  Enabled: false
@@ -8,6 +8,9 @@ module Relaton
8
8
  class FileIO
9
9
  attr_reader :url, :pubid_class
10
10
 
11
+ @@file_locks = {}
12
+ @@file_locks_mutex = Mutex.new
13
+
11
14
  #
12
15
  # Initialize FileIO
13
16
  #
@@ -39,7 +42,9 @@ module Relaton
39
42
  def read
40
43
  case url
41
44
  when String
42
- check_file || fetch_and_save
45
+ with_file_lock do
46
+ check_file || fetch_and_save
47
+ end
43
48
  else
44
49
  read_file || []
45
50
  end
@@ -146,6 +151,7 @@ module Relaton
146
151
  warn_local_index_error "YAML parsing error when reading"
147
152
  end
148
153
  end
154
+
149
155
  #
150
156
  # Fetch index from external repository and save it to storage
151
157
  #
@@ -153,11 +159,13 @@ module Relaton
153
159
  #
154
160
  def fetch_and_save
155
161
  resp = StringIO.new(URI(url).read)
156
- zip = Zip::InputStream.new resp
157
- entry = zip.get_next_entry
158
- yaml = entry.get_input_stream.read
162
+ yaml = nil
163
+ Zip::File.open_buffer(resp) do |zip|
164
+ entry = zip.entries.first
165
+ yaml = entry.get_input_stream.read
166
+ end
159
167
  Util.info "Downloaded index from `#{url}`", progname
160
- load_index(yaml, save = true)
168
+ load_index(yaml, _save = true)
161
169
  end
162
170
 
163
171
  def warn_remote_index_error(reason)
@@ -174,8 +182,10 @@ module Relaton
174
182
  # @return [void]
175
183
  #
176
184
  def save(index)
177
- Index.config.storage.write file,
178
- index.map { |item| item.transform_values { |value| value.is_a?(Pubid::Core::Identifier::Base) ? value.to_h : value } }.to_yaml
185
+ yaml = index.map do |item|
186
+ item.transform_values { |value| value.is_a?(Pubid::Core::Identifier::Base) ? value.to_h : value }
187
+ end.to_yaml
188
+ Index.config.storage.write file, yaml
179
189
  end
180
190
 
181
191
  #
@@ -187,6 +197,16 @@ module Relaton
187
197
  Index.config.storage.remove file
188
198
  []
189
199
  end
200
+
201
+ private
202
+
203
+ def with_file_lock(&)
204
+ @@file_locks_mutex.synchronize do
205
+ @@file_locks[file] ||= Mutex.new
206
+ end
207
+
208
+ @@file_locks[file].synchronize(&)
209
+ end
190
210
  end
191
211
  end
192
212
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Relaton
4
4
  module Index
5
- VERSION = "0.2.16"
5
+ VERSION = "0.2.18"
6
6
  end
7
7
  end
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.summary = "Relaton Index is a library for indexing Relaton files."
12
12
  spec.homepage = "https://github.com/relaton/relaton-index"
13
13
  spec.license = "MIT"
14
- spec.required_ruby_version = ">= 2.7.0"
14
+ spec.required_ruby_version = ">= 3.1.0"
15
15
 
16
16
  # spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"
17
17
 
@@ -30,7 +30,8 @@ Gem::Specification.new do |spec|
30
30
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
31
31
  spec.require_paths = ["lib"]
32
32
 
33
- spec.add_dependency "pubid-core", "~> 1.12.9"
33
+ spec.add_dependency "openssl", "~> 3.3.2"
34
+ spec.add_dependency "pubid-core", "~> 1.15.0"
34
35
  spec.add_dependency "relaton-logger", "~> 0.2.0"
35
36
  spec.add_dependency "rubyzip", "~> 2.3.0"
36
37
 
metadata CHANGED
@@ -1,29 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-index
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.16
4
+ version: 0.2.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-08-19 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: openssl
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: 3.3.2
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: 3.3.2
13
26
  - !ruby/object:Gem::Dependency
14
27
  name: pubid-core
15
28
  requirement: !ruby/object:Gem::Requirement
16
29
  requirements:
17
30
  - - "~>"
18
31
  - !ruby/object:Gem::Version
19
- version: 1.12.9
32
+ version: 1.15.0
20
33
  type: :runtime
21
34
  prerelease: false
22
35
  version_requirements: !ruby/object:Gem::Requirement
23
36
  requirements:
24
37
  - - "~>"
25
38
  - !ruby/object:Gem::Version
26
- version: 1.12.9
39
+ version: 1.15.0
27
40
  - !ruby/object:Gem::Dependency
28
41
  name: relaton-logger
29
42
  requirement: !ruby/object:Gem::Requirement
@@ -52,7 +65,6 @@ dependencies:
52
65
  - - "~>"
53
66
  - !ruby/object:Gem::Version
54
67
  version: 2.3.0
55
- description:
56
68
  email:
57
69
  - open.source@ribose.com
58
70
  executables: []
@@ -81,7 +93,6 @@ licenses:
81
93
  metadata:
82
94
  homepage_uri: https://github.com/relaton/relaton-index
83
95
  source_code_uri: https://github.com/relaton/relaton-index
84
- post_install_message:
85
96
  rdoc_options: []
86
97
  require_paths:
87
98
  - lib
@@ -89,15 +100,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
89
100
  requirements:
90
101
  - - ">="
91
102
  - !ruby/object:Gem::Version
92
- version: 2.7.0
103
+ version: 3.1.0
93
104
  required_rubygems_version: !ruby/object:Gem::Requirement
94
105
  requirements:
95
106
  - - ">="
96
107
  - !ruby/object:Gem::Version
97
108
  version: '0'
98
109
  requirements: []
99
- rubygems_version: 3.3.27
100
- signing_key:
110
+ rubygems_version: 3.6.9
101
111
  specification_version: 4
102
112
  summary: Relaton Index is a library for indexing Relaton files.
103
113
  test_files: []