zache 0.10.1 → 0.11.0
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 +4 -4
 - data/lib/zache.rb +12 -10
 - data/test/test_zache.rb +1 -0
 - data/zache.gemspec +1 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 4686166302287dae583252d66cd7d1a265a9fea6f5cc6c68f321249a9fe04d5e
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 7d960c4c23fa027e623f033a3ba618802d43d6d65a8b863c1ce99eb297fdacff
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: ef2ef6578ec02be0572e92f1e45ff104f9039bb3b189c5f2647c80d69a0c8f82a27bdd2f3238770b09c877b2424ace681b59f232713c6457cec07cf716ea85bf
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: f1651dd070af026762a57f2a1b34f45cceae1bac625a4b0bd5c32f1492615cf4e54f12fddaa8d50f19f84679b7d2096285670b839b79d190b50844531a865b8b
         
     | 
    
        data/lib/zache.rb
    CHANGED
    
    | 
         @@ -96,13 +96,13 @@ class Zache 
     | 
|
| 
       96 
96 
     | 
    
         
             
              # calculated result will be returned if it exists and is already expired.
         
     | 
| 
       97 
97 
     | 
    
         
             
              def get(key, lifetime: 2**32, dirty: false)
         
     | 
| 
       98 
98 
     | 
    
         
             
                if block_given?
         
     | 
| 
       99 
     | 
    
         
            -
                  if (dirty || @dirty) && locked? &&  
     | 
| 
      
 99 
     | 
    
         
            +
                  if (dirty || @dirty) && locked? && expired?(key) && @hash.key?(key)
         
     | 
| 
       100 
100 
     | 
    
         
             
                    return @hash[key][:value]
         
     | 
| 
       101 
101 
     | 
    
         
             
                  end
         
     | 
| 
       102 
102 
     | 
    
         
             
                  synchronized { calc(key, lifetime) { yield } }
         
     | 
| 
       103 
103 
     | 
    
         
             
                else
         
     | 
| 
       104 
104 
     | 
    
         
             
                  rec = @hash[key]
         
     | 
| 
       105 
     | 
    
         
            -
                  if  
     | 
| 
      
 105 
     | 
    
         
            +
                  if expired?(key)
         
     | 
| 
       106 
106 
     | 
    
         
             
                    return rec[:value] if dirty || @dirty
         
     | 
| 
       107 
107 
     | 
    
         
             
                    @hash.delete(key)
         
     | 
| 
       108 
108 
     | 
    
         
             
                    rec = nil
         
     | 
| 
         @@ -117,13 +117,20 @@ class Zache 
     | 
|
| 
       117 
117 
     | 
    
         
             
              # it will be removed by this method and the result will be FALSE.
         
     | 
| 
       118 
118 
     | 
    
         
             
              def exists?(key, dirty: false)
         
     | 
| 
       119 
119 
     | 
    
         
             
                rec = @hash[key]
         
     | 
| 
       120 
     | 
    
         
            -
                if  
     | 
| 
      
 120 
     | 
    
         
            +
                if expired?(key) && !dirty && !@dirty
         
     | 
| 
       121 
121 
     | 
    
         
             
                  @hash.delete(key)
         
     | 
| 
       122 
122 
     | 
    
         
             
                  rec = nil
         
     | 
| 
       123 
123 
     | 
    
         
             
                end
         
     | 
| 
       124 
124 
     | 
    
         
             
                !rec.nil?
         
     | 
| 
       125 
125 
     | 
    
         
             
              end
         
     | 
| 
       126 
126 
     | 
    
         | 
| 
      
 127 
     | 
    
         
            +
              # Checks whether the key exists in the cache and is expired. If the
         
     | 
| 
      
 128 
     | 
    
         
            +
              # key is absent FALSE is returned.
         
     | 
| 
      
 129 
     | 
    
         
            +
              def expired?(key)
         
     | 
| 
      
 130 
     | 
    
         
            +
                rec = @hash[key]
         
     | 
| 
      
 131 
     | 
    
         
            +
                !rec.nil? && rec[:start] < Time.now - rec[:lifetime]
         
     | 
| 
      
 132 
     | 
    
         
            +
              end
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
       127 
134 
     | 
    
         
             
              # Returns the modification time of the key, if it exists.
         
     | 
| 
       128 
135 
     | 
    
         
             
              # If not, current time is returned.
         
     | 
| 
       129 
136 
     | 
    
         
             
              def mtime(key)
         
     | 
| 
         @@ -160,14 +167,14 @@ class Zache 
     | 
|
| 
       160 
167 
     | 
    
         | 
| 
       161 
168 
     | 
    
         
             
              # Remove keys that are expired.
         
     | 
| 
       162 
169 
     | 
    
         
             
              def clean
         
     | 
| 
       163 
     | 
    
         
            -
                synchronized { @hash.delete_if { |_key, value|  
     | 
| 
      
 170 
     | 
    
         
            +
                synchronized { @hash.delete_if { |_key, value| expired?(value) } }
         
     | 
| 
       164 
171 
     | 
    
         
             
              end
         
     | 
| 
       165 
172 
     | 
    
         | 
| 
       166 
173 
     | 
    
         
             
              private
         
     | 
| 
       167 
174 
     | 
    
         | 
| 
       168 
175 
     | 
    
         
             
              def calc(key, lifetime)
         
     | 
| 
       169 
176 
     | 
    
         
             
                rec = @hash[key]
         
     | 
| 
       170 
     | 
    
         
            -
                rec = nil if  
     | 
| 
      
 177 
     | 
    
         
            +
                rec = nil if expired?(key)
         
     | 
| 
       171 
178 
     | 
    
         
             
                if rec.nil?
         
     | 
| 
       172 
179 
     | 
    
         
             
                  @hash[key] = {
         
     | 
| 
       173 
180 
     | 
    
         
             
                    value: yield,
         
     | 
| 
         @@ -191,9 +198,4 @@ class Zache 
     | 
|
| 
       191 
198 
     | 
    
         
             
                  yield
         
     | 
| 
       192 
199 
     | 
    
         
             
                end
         
     | 
| 
       193 
200 
     | 
    
         
             
              end
         
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
       195 
     | 
    
         
            -
              def key_expired?(key)
         
     | 
| 
       196 
     | 
    
         
            -
                rec = @hash[key]
         
     | 
| 
       197 
     | 
    
         
            -
                !rec.nil? && rec[:start] < Time.now - rec[:lifetime]
         
     | 
| 
       198 
     | 
    
         
            -
              end
         
     | 
| 
       199 
201 
     | 
    
         
             
            end
         
     | 
    
        data/test/test_zache.rb
    CHANGED
    
    
    
        data/zache.gemspec
    CHANGED
    
    | 
         @@ -31,7 +31,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       31 
31 
     | 
    
         
             
              s.rubygems_version = '2.5'
         
     | 
| 
       32 
32 
     | 
    
         
             
              s.required_ruby_version = '>=2.5'
         
     | 
| 
       33 
33 
     | 
    
         
             
              s.name = 'zache'
         
     | 
| 
       34 
     | 
    
         
            -
              s.version = '0. 
     | 
| 
      
 34 
     | 
    
         
            +
              s.version = '0.11.0'
         
     | 
| 
       35 
35 
     | 
    
         
             
              s.license = 'MIT'
         
     | 
| 
       36 
36 
     | 
    
         
             
              s.summary = 'In-memory Cache'
         
     | 
| 
       37 
37 
     | 
    
         
             
              s.description = 'Zero-footprint in-memory thread-safe cache'
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: zache
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.11.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Yegor Bugayenko
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2019-01- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2019-01-10 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: concurrent-ruby
         
     |