zache 0.5.0 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a1b2d35db53d59daaf2d281eb08c0381bc0d7302cbab9d817c39b22e8aec93b0
4
- data.tar.gz: db7d2212ceea4cc6f7e2f8feb5954b720c16ed0fd12fab56ea50c2d2fed5621c
3
+ metadata.gz: 8dc54638fe09360b05870981cc7b8ede8697aa4aba65121a33da31a23a65f339
4
+ data.tar.gz: 3ba83d9a9231b3facc5faf87409a4c61ab6b9638a37bcd2a29a435965e4e530d
5
5
  SHA512:
6
- metadata.gz: 63ffba8c6c32c96aabbf443b6faa94bcbe4b8e5a6fb2f2a39ac36bdc6a68906c7d0f46a8266d10d485ed4ec463104d38f65bfed4cb3bf246a8d4cfdbe2da545e
7
- data.tar.gz: 9b46a730a46d6a177092b1499f3cd020796eb4c63782a17cb0e8c54ad55e1fabbaf9b9d96ff703ab41e502e41dcf8d338a184e9fad4aae29eaddd95a19555938
6
+ metadata.gz: bf689543044621801b55f6bc9800dcb5cb7f9f38193d6872485f5551cfec85957207184d24113707a39c36fae1ce1ba54a5be0b432f61077e352a7c88adc334e
7
+ data.tar.gz: 555f8d872a9ff2780cc75a9c8f782d8fdf381ad8dce75020c58183644295ffe4b2417ba4285193d02a5bd16288920e94c3b3d8512865916abaa255106cb91e1d
data/.rubocop.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  AllCops:
2
2
  DisplayCopNames: true
3
- TargetRubyVersion: 2.3.3
3
+ TargetRubyVersion: 2.5
4
4
 
5
5
  Metrics/ClassLength:
6
6
  Exclude:
data/lib/zache.rb CHANGED
@@ -139,7 +139,13 @@ class Zache
139
139
 
140
140
  def synchronized
141
141
  if @sync
142
- @monitor.mon_synchronize { yield }
142
+ @monitor.synchronize do
143
+ # I don't know why, but if you remove this line, the tests will
144
+ # break. It seems to me that there is a bug in Ruby. Let's try to
145
+ # fix it or find a workaround and remove this line.
146
+ sleep 0.00001
147
+ yield
148
+ end
143
149
  else
144
150
  yield
145
151
  end
data/test/test_zache.rb CHANGED
@@ -25,8 +25,11 @@
25
25
  require 'minitest/autorun'
26
26
  require 'threads'
27
27
  require 'timeout'
28
+ require 'concurrent'
28
29
  require_relative '../lib/zache'
29
30
 
31
+ Thread.report_on_exception = true
32
+
30
33
  # Cache test.
31
34
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
32
35
  # Copyright:: Copyright (c) 2018 Yegor Bugayenko
@@ -197,4 +200,14 @@ class ZacheTest < Minitest::Test
197
200
  end
198
201
  long.kill
199
202
  end
203
+
204
+ def test_fetches_multiple_keys_in_many_threads
205
+ cache = Zache.new(dirty: true)
206
+ set = Concurrent::Set.new
207
+ threads = 50
208
+ Threads.new(threads).assert(threads * 2) do |i|
209
+ set << cache.get(i) { i }
210
+ end
211
+ assert_equal(threads, set.size)
212
+ end
200
213
  end
data/zache.gemspec CHANGED
@@ -28,10 +28,10 @@ Gem::Specification.new do |s|
28
28
  if s.respond_to? :required_rubygems_version=
29
29
  s.required_rubygems_version = Gem::Requirement.new('>= 0')
30
30
  end
31
- s.rubygems_version = '2.3.3'
32
- s.required_ruby_version = '>=2.3'
31
+ s.rubygems_version = '2.5'
32
+ s.required_ruby_version = '>=2.5'
33
33
  s.name = 'zache'
34
- s.version = '0.5.0'
34
+ s.version = '0.5.1'
35
35
  s.license = 'MIT'
36
36
  s.summary = 'In-memory Cache'
37
37
  s.description = 'Zero-footprint in-memory thread-safe cache'
@@ -42,6 +42,7 @@ Gem::Specification.new do |s|
42
42
  s.test_files = s.files.grep(%r{^(test)/})
43
43
  s.rdoc_options = ['--charset=UTF-8']
44
44
  s.extra_rdoc_files = ['README.md']
45
+ s.add_development_dependency 'concurrent-ruby', '1.1.3'
45
46
  s.add_development_dependency 'minitest', '5.11.3'
46
47
  s.add_development_dependency 'rake', '12.3.1'
47
48
  s.add_development_dependency 'rdoc', '4.3.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
@@ -10,6 +10,20 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2018-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: concurrent-ruby
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.1.3
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.1.3
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: minitest
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -127,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
127
141
  requirements:
128
142
  - - ">="
129
143
  - !ruby/object:Gem::Version
130
- version: '2.3'
144
+ version: '2.5'
131
145
  required_rubygems_version: !ruby/object:Gem::Requirement
132
146
  requirements:
133
147
  - - ">="