bogo 0.2.15 → 0.2.16

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
  SHA256:
3
- metadata.gz: 3c54ebb5a6708a864ecac0a28f00ac6195ec7ea8cbf4b45af0938e819dcbb352
4
- data.tar.gz: d433b7b015699094dfb387e301627259bb1bd5fedce8b737a3975f23a1893903
3
+ metadata.gz: '005490ecb547fbeb1d4b941787e8a963c3c17ac8403527deb3ed6b33614312da'
4
+ data.tar.gz: f6c08b295196223458fa8649fd2224d8f46cd0e641545bed5c4173bdccda8c88
5
5
  SHA512:
6
- metadata.gz: 976fc3309852ef467a1407a74e70c32b4ebb42d168e28feb32f0a1171239ca26e5dfb8c004ac60daf93cd9aeff4f68ce616728be33cfbe2d485850a5e4888a77
7
- data.tar.gz: 7bd54f01ae3b64183caf8582e93c2d34e28ddb2e3fbaeeb4eb49b04ef45c2cd3eb0807974749a34fa7dbbbb28d1eecacf71988e9675e51740eecc97ca7282d88
6
+ metadata.gz: a501ec13801d316df3d9fccec43bb86dbb6b3cb4847fc6645b266aeff41bebd51107090b733287650badbe038cfeb37cb59a6254fa366b74a65a3c4dce4b38e9
7
+ data.tar.gz: 25ff9327f54f0b8f3d4602e9834d87548a959f14a767fa9243d75037fe542efbc83eae002ca6dd9e2e461b2dda8c474d84bbcb4f0b1699aebfe551b5f86ae251
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # v0.2.16
2
+ * [Lazy] Fix synchronization (#8)
3
+ * [Memoization] Check for data before deleting
4
+
1
5
  # v0.2.15
2
6
  * [Logger] Fix frozen string modification (#6)
3
7
  * [Stack] Add stack
data/lib/bogo/lazy.rb CHANGED
@@ -11,19 +11,16 @@ module Bogo
11
11
  def self.included(klass)
12
12
  klass.include(MonitorMixin)
13
13
  klass.instance_variable_set(:@calling_on_missing, false)
14
- klass.class_eval do
15
- alias_method :unlazy_initialize, :initialize
16
- def initialize(*args, **opts, &block)
17
- @data = nil
18
- @dirty = Smash.new
19
- unlazy_initialize(*args, **opts, &block)
20
- end
21
- end
14
+ end
15
+
16
+ # @return [Monitor] Monitor instance for synchronization
17
+ def _mon
18
+ @mon ||= Monitor.new
22
19
  end
23
20
 
24
21
  # @return [Smash] argument hash
25
22
  def data
26
- synchronize do
23
+ _mon.synchronize do
27
24
  unless(@data)
28
25
  @data = Smash.new
29
26
  self.class.attributes.each do |key, value|
@@ -38,7 +35,7 @@ module Bogo
38
35
 
39
36
  # @return [Smash] updated data
40
37
  def dirty
41
- synchronize do
38
+ _mon.synchronize do
42
39
  unless(@dirty)
43
40
  @dirty = Smash.new
44
41
  end
@@ -48,7 +45,7 @@ module Bogo
48
45
 
49
46
  # @return [Smash] current data state
50
47
  def attributes
51
- synchronize { data.merge(dirty) }
48
+ _mon.synchronize { data.merge(dirty) }
52
49
  end
53
50
 
54
51
  # Create new instance
@@ -56,7 +53,7 @@ module Bogo
56
53
  # @param args [Hash]
57
54
  # @return [self]
58
55
  def load_data(args={})
59
- synchronize do
56
+ _mon.synchronize do
60
57
  args = args.to_smash
61
58
  @data = Smash.new
62
59
  self.class.attributes.each do |name, options|
@@ -83,7 +80,7 @@ module Bogo
83
80
  #
84
81
  # @return [self]
85
82
  def valid_state
86
- synchronize do
83
+ _mon.synchronize do
87
84
  data.merge!(dirty)
88
85
  dirty.clear
89
86
  @_checksum = Digest::SHA256.hexdigest(MultiJson.dump(data.inspect).to_s)
@@ -96,7 +93,7 @@ module Bogo
96
93
  # @param attr [String, Symbol] name of attribute
97
94
  # @return [TrueClass, FalseClass] model or attribute is dirty
98
95
  def dirty?(attr=nil)
99
- synchronize do
96
+ _mon.synchronize do
100
97
  if(attr)
101
98
  dirty.has_key?(attr)
102
99
  else
@@ -122,7 +119,7 @@ module Bogo
122
119
 
123
120
  # @return [Hash]
124
121
  def to_h
125
- synchronize do
122
+ _mon.synchronize do
126
123
  Hash[
127
124
  attributes.map{|k,v|
128
125
  [k, v.is_a?(Array) ?
@@ -15,7 +15,7 @@ module Bogo
15
15
  proc do
16
16
  Thread.current[:bogo_memoization].delete_if do |k,v|
17
17
  k.to_s.start_with?(object_id.to_s)
18
- end
18
+ end if Thread.current[:bogo_memoization].is_a?(Hash)
19
19
  end
20
20
  end
21
21
 
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.15")
3
+ VERSION = Gem::Version.new("0.2.16")
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.15
4
+ version: 0.2.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Roberts
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-03 00:00:00.000000000 Z
11
+ date: 2022-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie