bogo 0.2.2 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 67d66974c6df70fceac173ca8680912765ceaae4
4
- data.tar.gz: 2e26a1f90da6457d69625321f9867299a93eeac1
3
+ metadata.gz: 4504cb2673dd897223ce5fae70b1ceb64d515695
4
+ data.tar.gz: ff417d3db98419a0a5a03f19b953268294f44920
5
5
  SHA512:
6
- metadata.gz: f34d39dfe7ba722109b8d91d22cbd5bd4c309faa0b5830e8a9f0eac5542dcc0f135bee8a9fa4d9ad3ab1a4a43930ad0710f5d7b680b2d392a08e6af5c4604215
7
- data.tar.gz: be7510b79b8bc3666bf93f705ee7d8da97f18a6acebdab02f6abc3e13365277e05b951551773625c63e8fdc5f2d91fa5990b53ff6c3c6d0128ae6862943a0c3d
6
+ metadata.gz: 119543ee94889f8c3d7b48132506e454e8a8753c37e5e9e15c2bf45d9d5c37e3aee4bc3a71d8ae5373bbc703b31d9376de34f39c36755d61754dd6354b5e681d
7
+ data.tar.gz: 3e6c60c90577c10871e5a1930c88d125c9a4ad7031615be7cbe2967e565258971eaab03745caa506569e36f8ce0fa23ad5c8673e5756030bd76eed80b9703b3a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ # v0.2.4
2
+ * [Memoization] Refactor to remove Ruby 2.3 deprecation warnings
3
+
1
4
  # v0.2.2
2
5
  * [Memoization] Add #memoized? helper
3
6
 
data/bogo.gemspec CHANGED
@@ -14,5 +14,6 @@ Gem::Specification.new do |s|
14
14
  s.add_runtime_dependency 'multi_json'
15
15
  s.add_development_dependency 'pry'
16
16
  s.add_development_dependency 'minitest'
17
+ s.add_development_dependency 'rake', '~> 10'
17
18
  s.files = Dir['lib/**/*'] + %w(bogo.gemspec README.md CHANGELOG.md CONTRIBUTING.md LICENSE)
18
19
  end
@@ -4,6 +4,11 @@ module Bogo
4
4
  # Memoization helpers
5
5
  module Memoization
6
6
 
7
+ # Lock for providing exclusive access
8
+ EXCLUSIVE_LOCK = Mutex.new
9
+ # Holder for global memoization items
10
+ GLOBAL_MEMOS = Smash.new
11
+
7
12
  class << self
8
13
 
9
14
  # Clean up isolated memoizations
@@ -29,8 +34,8 @@ module Bogo
29
34
  #
30
35
  # @return [nil]
31
36
  def clear_global!
32
- Thread.exclusive do
33
- $bogo_memoization = Smash.new
37
+ EXCLUSIVE_LOCK.synchronize do
38
+ GLOBAL_MEMOS.clear
34
39
  end
35
40
  end
36
41
 
@@ -48,12 +53,11 @@ module Bogo
48
53
  key = "#{self.object_id}_#{key}"
49
54
  end
50
55
  if(direct == :global)
51
- Thread.exclusive do
52
- $bogo_memoization ||= Smash.new
53
- unless($bogo_memoization.has_key?(key))
54
- $bogo_memoization[key] = yield
56
+ EXCLUSIVE_LOCK.synchronize do
57
+ unless(GLOBAL_MEMOS.has_key?(key))
58
+ GLOBAL_MEMOS[key] = yield
55
59
  end
56
- $bogo_memoization[key]
60
+ GLOBAL_MEMOS[key]
57
61
  end
58
62
  else
59
63
  unless(_memo.has_key?(key))
@@ -82,9 +86,8 @@ module Bogo
82
86
  key = "#{self.object_id}_#{key}"
83
87
  end
84
88
  if(direct == :global)
85
- Thread.exclusive do
86
- $bogo_memoization ||= Smash.new
87
- $bogo_memoization.key?(key)
89
+ EXCLUSIVE_LOCK.synchronize do
90
+ GLOBAL_MEMOS.key?(key)
88
91
  end
89
92
  else
90
93
  _memo.key?(key)
@@ -101,9 +104,8 @@ module Bogo
101
104
  key = "#{self.object_id}_#{key}"
102
105
  end
103
106
  if(direct == :global)
104
- Thread.exclusive do
105
- $bogo_memoization ||= Smash.new
106
- $bogo_memoization.delete(key)
107
+ EXCLUSIVE_LOCK.synchronize do
108
+ GLOBAL_MEMOS.delete(key)
107
109
  end
108
110
  else
109
111
  _memo.delete(key)
data/lib/bogo/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Bogo
2
2
  # Current library version
3
- VERSION = Gem::Version.new('0.2.2')
3
+ VERSION = Gem::Version.new('0.2.4')
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bogo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Roberts
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-10 00:00:00.000000000 Z
11
+ date: 2016-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10'
69
83
  description: Helper libraries
70
84
  email: code@chrisroberts.org
71
85
  executables: []
@@ -109,9 +123,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
123
  version: '0'
110
124
  requirements: []
111
125
  rubyforge_project:
112
- rubygems_version: 2.4.8
126
+ rubygems_version: 2.5.1
113
127
  signing_key:
114
128
  specification_version: 4
115
129
  summary: Helper libraries
116
130
  test_files: []
117
- has_rdoc: