bogo 0.2.15 → 0.2.16

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: 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