cachext 0.4.2 → 0.5.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/README.md +22 -5
 - data/cachext.gemspec +2 -5
 - data/lib/cachext.rb +5 -1
 - data/lib/cachext/breaker.rb +10 -10
 - data/lib/cachext/client.rb +1 -1
 - data/lib/cachext/configuration.rb +3 -3
 - data/lib/cachext/features/circuit_breaker.rb +3 -1
 - data/lib/cachext/features/lock.rb +3 -3
 - data/lib/cachext/key.rb +5 -1
 - data/lib/cachext/multi.rb +1 -1
 - data/lib/cachext/version.rb +1 -1
 - metadata +9 -23
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 5da982260e1706152de87d9c872a5afa37867ce1
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 1d079cce845a3f8e0a2af95f86a8be384f8523f6
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: de945e54a8b4d22408b645383b57b586122041e96c5d35bf29c7dd23402938474f2f85dec7bd43ce8f08034580de10d7f08c7944915a5d0b723a167a57766983
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: c96fcf677dfd5712994c451e5fb5677b195da74ed74d193e2eac59be93ce691db0e8b5e1b5edae46479930734867ae3353d558a2e1babc95aa01dac7e951a2b8
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -8,6 +8,7 @@ Extensions to normal Rails caching: 
     | 
|
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            * Lock (inspired by https://github.com/seamusabshere/lock_and_cache)
         
     | 
| 
       10 
10 
     | 
    
         
             
            * Backup
         
     | 
| 
      
 11 
     | 
    
         
            +
            * Circuit breaker
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
13 
     | 
    
         
             
            ## Quickstart
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
         @@ -119,6 +120,19 @@ Cachext.config.error_logger = nil 
     | 
|
| 
       119 
120 
     | 
    
         | 
| 
       120 
121 
     | 
    
         
             
            If set to an object that responds to call, will `call` with any errors caught.
         
     | 
| 
       121 
122 
     | 
    
         | 
| 
      
 123 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 124 
     | 
    
         
            +
            Cachext.config.failure_threshold = 3
         
     | 
| 
      
 125 
     | 
    
         
            +
            ```
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
            Number of tries before tripping circuit breaker.
         
     | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
      
 129 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 130 
     | 
    
         
            +
            Cachext.config.breaker_timeout = 60
         
     | 
| 
      
 131 
     | 
    
         
            +
            ```
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
            Time in seconds to wait before switching breaker to half-open.
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
       122 
136 
     | 
    
         
             
            ## Usage
         
     | 
| 
       123 
137 
     | 
    
         | 
| 
       124 
138 
     | 
    
         
             
            ```ruby
         
     | 
| 
         @@ -129,11 +143,14 @@ Available options: 
     | 
|
| 
       129 
143 
     | 
    
         | 
| 
       130 
144 
     | 
    
         
             
            * `expires_in`: override for the `default_expires_in`, in seconds
         
     | 
| 
       131 
145 
     | 
    
         
             
            * `default`: object or proc that will be used as the default if no backup is found
         
     | 
| 
       132 
     | 
    
         
            -
            * `errors`: override for the `default_errors 
     | 
| 
       133 
     | 
    
         
            -
            * `reraise_errors`: default `true`, if set to `false` NotFound errors will not
         
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
       135 
     | 
    
         
            -
            * ` 
     | 
| 
       136 
     | 
    
         
            -
            * ` 
     | 
| 
      
 146 
     | 
    
         
            +
            * `errors`: override for the `default_errors`: array of errors to catch and not reraise
         
     | 
| 
      
 147 
     | 
    
         
            +
            * `reraise_errors`: default `true`, if set to `false` NotFound errors will not be raised
         
     | 
| 
      
 148 
     | 
    
         
            +
            * `not_found_error`: (override) array of errors where we delete the backup and reraise
         
     | 
| 
      
 149 
     | 
    
         
            +
            * `heartbeat_expires`: (override) time in seconds for process heardbeat to expire
         
     | 
| 
      
 150 
     | 
    
         
            +
            * `failure_threshold`: (override) Number of tries before tripping circuit breaker
         
     | 
| 
      
 151 
     | 
    
         
            +
            * `breaker_timeout`: (override) time in seconds to wait before switching breaker to half-open
         
     | 
| 
      
 152 
     | 
    
         
            +
            * `cache`: use the first-level cache, defaults to true. If set to false, will always call the
         
     | 
| 
      
 153 
     | 
    
         
            +
              fallback, but if an error is raised, will use the last known good value.
         
     | 
| 
       137 
154 
     | 
    
         | 
| 
       138 
155 
     | 
    
         
             
            ```ruby
         
     | 
| 
       139 
156 
     | 
    
         
             
            Cachext.multi key_base, ids, options, &block
         
     | 
    
        data/cachext.gemspec
    CHANGED
    
    | 
         @@ -15,17 +15,14 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       15 
15 
     | 
    
         
             
              spec.license       = "MIT"
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
              spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
         
     | 
| 
       18 
     | 
    
         
            -
              spec.bindir        = "exe"
         
     | 
| 
       19 
     | 
    
         
            -
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         
     | 
| 
       20 
18 
     | 
    
         
             
              spec.require_paths = ["lib"]
         
     | 
| 
       21 
19 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
              spec.add_dependency " 
     | 
| 
      
 20 
     | 
    
         
            +
              spec.add_dependency "faraday"
         
     | 
| 
       23 
21 
     | 
    
         
             
              spec.add_dependency "redis"
         
     | 
| 
       24 
     | 
    
         
            -
              spec.add_dependency "redis-namespace"
         
     | 
| 
       25 
22 
     | 
    
         
             
              spec.add_dependency "redlock"
         
     | 
| 
       26 
     | 
    
         
            -
              spec.add_dependency "faraday"
         
     | 
| 
       27 
23 
     | 
    
         
             
              spec.add_dependency "dalli"
         
     | 
| 
       28 
24 
     | 
    
         | 
| 
      
 25 
     | 
    
         
            +
              spec.add_development_dependency "activesupport"
         
     | 
| 
       29 
26 
     | 
    
         
             
              spec.add_development_dependency "bundler", "~> 1.10"
         
     | 
| 
       30 
27 
     | 
    
         
             
              spec.add_development_dependency "rake", "~> 10.0"
         
     | 
| 
       31 
28 
     | 
    
         
             
              spec.add_development_dependency "rspec"
         
     | 
    
        data/lib/cachext.rb
    CHANGED
    
    | 
         @@ -1,5 +1,4 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require "cachext/version"
         
     | 
| 
       2 
     | 
    
         
            -
            require "faraday/error"
         
     | 
| 
       3 
2 
     | 
    
         | 
| 
       4 
3 
     | 
    
         
             
            module Cachext
         
     | 
| 
       5 
4 
     | 
    
         
             
              autoload :Breaker, "cachext/breaker"
         
     | 
| 
         @@ -50,7 +49,12 @@ module Cachext 
     | 
|
| 
       50 
49 
     | 
    
         
             
              end
         
     | 
| 
       51 
50 
     | 
    
         | 
| 
       52 
51 
     | 
    
         
             
              def self.configure &block
         
     | 
| 
      
 52 
     | 
    
         
            +
                @config_block = block
         
     | 
| 
       53 
53 
     | 
    
         
             
                @config = Configuration.setup(&block)
         
     | 
| 
       54 
54 
     | 
    
         
             
                @client = Client.new @config
         
     | 
| 
       55 
55 
     | 
    
         
             
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
              def self.forked!
         
     | 
| 
      
 58 
     | 
    
         
            +
                configure(&@config_block)
         
     | 
| 
      
 59 
     | 
    
         
            +
              end
         
     | 
| 
       56 
60 
     | 
    
         
             
            end
         
     | 
    
        data/lib/cachext/breaker.rb
    CHANGED
    
    | 
         @@ -21,9 +21,9 @@ module Cachext 
     | 
|
| 
       21 
21 
     | 
    
         
             
                  end
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
                  def increment_failure
         
     | 
| 
       24 
     | 
    
         
            -
                     
     | 
| 
       25 
     | 
    
         
            -
                       
     | 
| 
       26 
     | 
    
         
            -
                       
     | 
| 
      
 24 
     | 
    
         
            +
                    lock_redis.pipelined do
         
     | 
| 
      
 25 
     | 
    
         
            +
                      lock_redis.set key_str(:last_failure), Time.now.to_f
         
     | 
| 
      
 26 
     | 
    
         
            +
                      lock_redis.incr key_str(:monitor)
         
     | 
| 
       27 
27 
     | 
    
         
             
                    end
         
     | 
| 
       28 
28 
     | 
    
         
             
                  end
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
         @@ -38,7 +38,7 @@ module Cachext 
     | 
|
| 
       38 
38 
     | 
    
         
             
                  end
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
                  def reset!
         
     | 
| 
       41 
     | 
    
         
            -
                     
     | 
| 
      
 41 
     | 
    
         
            +
                    lock_redis.del key_str(:monitor),
         
     | 
| 
       42 
42 
     | 
    
         
             
                              key_str(:health_check),
         
     | 
| 
       43 
43 
     | 
    
         
             
                              key_str(:last_failure)
         
     | 
| 
       44 
44 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -62,27 +62,27 @@ module Cachext 
     | 
|
| 
       62 
62 
     | 
    
         
             
                  end
         
     | 
| 
       63 
63 
     | 
    
         | 
| 
       64 
64 
     | 
    
         
             
                  def monitor
         
     | 
| 
       65 
     | 
    
         
            -
                     
     | 
| 
      
 65 
     | 
    
         
            +
                    lock_redis.get(key_str(:monitor)).to_i
         
     | 
| 
       66 
66 
     | 
    
         
             
                  end
         
     | 
| 
       67 
67 
     | 
    
         | 
| 
       68 
68 
     | 
    
         
             
                  def last_failure
         
     | 
| 
       69 
     | 
    
         
            -
                    lf =  
     | 
| 
      
 69 
     | 
    
         
            +
                    lf = lock_redis.get key_str(:last_failure)
         
     | 
| 
       70 
70 
     | 
    
         
             
                    lf.nil? ? nil : lf.to_f
         
     | 
| 
       71 
71 
     | 
    
         
             
                  end
         
     | 
| 
       72 
72 
     | 
    
         | 
| 
       73 
73 
     | 
    
         
             
                  def health_check
         
     | 
| 
       74 
     | 
    
         
            -
                     
     | 
| 
      
 74 
     | 
    
         
            +
                    lock_redis.get(key_str(:health_check)).to_i
         
     | 
| 
       75 
75 
     | 
    
         
             
                  end
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
       77 
77 
     | 
    
         
             
                  def increment_health_check
         
     | 
| 
       78 
     | 
    
         
            -
                     
     | 
| 
      
 78 
     | 
    
         
            +
                    lock_redis.incr key_str(:health_check)
         
     | 
| 
       79 
79 
     | 
    
         
             
                  end
         
     | 
| 
       80 
80 
     | 
    
         | 
| 
       81 
81 
     | 
    
         
             
                  def key_str(name)
         
     | 
| 
       82 
     | 
    
         
            -
                    " 
     | 
| 
      
 82 
     | 
    
         
            +
                    "cachext:#{name}:#{key.raw.map(&:to_s).join(":")}"
         
     | 
| 
       83 
83 
     | 
    
         
             
                  end
         
     | 
| 
       84 
84 
     | 
    
         | 
| 
       85 
     | 
    
         
            -
                  def  
     | 
| 
      
 85 
     | 
    
         
            +
                  def lock_redis
         
     | 
| 
       86 
86 
     | 
    
         
             
                    config.lock_redis
         
     | 
| 
       87 
87 
     | 
    
         
             
                  end
         
     | 
| 
       88 
88 
     | 
    
         
             
                end
         
     | 
    
        data/lib/cachext/client.rb
    CHANGED
    
    
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require "redlock"
         
     | 
| 
       2 
     | 
    
         
            -
            require "redis-namespace"
         
     | 
| 
       3 
2 
     | 
    
         
             
            require "thread"
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "faraday/error"
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            module Cachext
         
     | 
| 
       6 
6 
     | 
    
         
             
              class Configuration
         
     | 
| 
         @@ -59,7 +59,7 @@ module Cachext 
     | 
|
| 
       59 
59 
     | 
    
         
             
                end
         
     | 
| 
       60 
60 
     | 
    
         | 
| 
       61 
61 
     | 
    
         
             
                def lock_redis
         
     | 
| 
       62 
     | 
    
         
            -
                   
     | 
| 
      
 62 
     | 
    
         
            +
                  redis
         
     | 
| 
       63 
63 
     | 
    
         
             
                end
         
     | 
| 
       64 
64 
     | 
    
         | 
| 
       65 
65 
     | 
    
         
             
                def log_errors?
         
     | 
| 
         @@ -69,7 +69,7 @@ module Cachext 
     | 
|
| 
       69 
69 
     | 
    
         
             
                def debug
         
     | 
| 
       70 
70 
     | 
    
         
             
                  if block_given?
         
     | 
| 
       71 
71 
     | 
    
         
             
                    if @debug
         
     | 
| 
       72 
     | 
    
         
            -
                      @ 
     | 
| 
      
 72 
     | 
    
         
            +
                      @debug_mutex.synchronize do
         
     | 
| 
       73 
73 
     | 
    
         
             
                        yield
         
     | 
| 
       74 
74 
     | 
    
         
             
                      end
         
     | 
| 
       75 
75 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -11,7 +11,9 @@ module Cachext 
     | 
|
| 
       11 
11 
     | 
    
         
             
                  def read key, options
         
     | 
| 
       12 
12 
     | 
    
         
             
                    circuit = breaker.for(key)
         
     | 
| 
       13 
13 
     | 
    
         
             
                    if circuit.open?
         
     | 
| 
       14 
     | 
    
         
            -
                      key.read_backup
         
     | 
| 
      
 14 
     | 
    
         
            +
                      val = key.read_backup
         
     | 
| 
      
 15 
     | 
    
         
            +
                      debug_log { { m: :circuit_open, key: key, msg: "Circuit breaker open, reading from backup", val: val.inspect } }
         
     | 
| 
      
 16 
     | 
    
         
            +
                      val
         
     | 
| 
       15 
17 
     | 
    
         
             
                    else
         
     | 
| 
       16 
18 
     | 
    
         
             
                      circuit.check_health
         
     | 
| 
       17 
19 
     | 
    
         
             
                      super
         
     | 
| 
         @@ -19,7 +19,7 @@ module Cachext 
     | 
|
| 
       19 
19 
     | 
    
         
             
                  end
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
                  def call_block key, options, &block
         
     | 
| 
       22 
     | 
    
         
            -
                    with_heartbeat_extender key. 
     | 
| 
      
 22 
     | 
    
         
            +
                    with_heartbeat_extender key.lock_key, options.heartbeat_expires do
         
     | 
| 
       23 
23 
     | 
    
         
             
                      super
         
     | 
| 
       24 
24 
     | 
    
         
             
                    end
         
     | 
| 
       25 
25 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -46,9 +46,9 @@ module Cachext 
     | 
|
| 
       46 
46 
     | 
    
         
             
                  def obtain_lock key, options
         
     | 
| 
       47 
47 
     | 
    
         
             
                    start_time = Time.now
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
                    until lock_info ||= @config.lock_manager.lock(key. 
     | 
| 
      
 49 
     | 
    
         
            +
                    until lock_info ||= @config.lock_manager.lock(key.lock_key, (options.heartbeat_expires * 1000).ceil)
         
     | 
| 
       50 
50 
     | 
    
         
             
                      if wait_for_lock(key, start_time) == :timeout
         
     | 
| 
       51 
     | 
    
         
            -
                        lock_info = @config.lock_manager.lock(key. 
     | 
| 
      
 51 
     | 
    
         
            +
                        lock_info = @config.lock_manager.lock(key.lock_key, (options.heartbeat_expires * 1000).ceil)
         
     | 
| 
       52 
52 
     | 
    
         
             
                        raise TimeoutWaitingForLock unless lock_info
         
     | 
| 
       53 
53 
     | 
    
         
             
                      end
         
     | 
| 
       54 
54 
     | 
    
         
             
                    end
         
     | 
    
        data/lib/cachext/key.rb
    CHANGED
    
    
    
        data/lib/cachext/multi.rb
    CHANGED
    
    
    
        data/lib/cachext/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,31 +1,17 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: cachext
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.5.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Donald Plummer
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
     | 
    
         
            -
            bindir:  
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2017-11-27 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
     | 
    
         
            -
              name:  
     | 
| 
       15 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       16 
     | 
    
         
            -
                requirements:
         
     | 
| 
       17 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       18 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
     | 
    
         
            -
                    version: '4.2'
         
     | 
| 
       20 
     | 
    
         
            -
              type: :runtime
         
     | 
| 
       21 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       22 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
     | 
    
         
            -
                requirements:
         
     | 
| 
       24 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       25 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
     | 
    
         
            -
                    version: '4.2'
         
     | 
| 
       27 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
     | 
    
         
            -
              name: redis
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: faraday
         
     | 
| 
       29 
15 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       30 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       31 
17 
     | 
    
         
             
                - - ">="
         
     | 
| 
         @@ -39,7 +25,7 @@ dependencies: 
     | 
|
| 
       39 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
26 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       41 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       42 
     | 
    
         
            -
              name: redis 
     | 
| 
      
 28 
     | 
    
         
            +
              name: redis
         
     | 
| 
       43 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       44 
30 
     | 
    
         
             
                requirements:
         
     | 
| 
       45 
31 
     | 
    
         
             
                - - ">="
         
     | 
| 
         @@ -67,7 +53,7 @@ dependencies: 
     | 
|
| 
       67 
53 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       68 
54 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       69 
55 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       70 
     | 
    
         
            -
              name:  
     | 
| 
      
 56 
     | 
    
         
            +
              name: dalli
         
     | 
| 
       71 
57 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       72 
58 
     | 
    
         
             
                requirements:
         
     | 
| 
       73 
59 
     | 
    
         
             
                - - ">="
         
     | 
| 
         @@ -81,13 +67,13 @@ dependencies: 
     | 
|
| 
       81 
67 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       82 
68 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       83 
69 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       84 
     | 
    
         
            -
              name:  
     | 
| 
      
 70 
     | 
    
         
            +
              name: activesupport
         
     | 
| 
       85 
71 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       86 
72 
     | 
    
         
             
                requirements:
         
     | 
| 
       87 
73 
     | 
    
         
             
                - - ">="
         
     | 
| 
       88 
74 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       89 
75 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       90 
     | 
    
         
            -
              type: : 
     | 
| 
      
 76 
     | 
    
         
            +
              type: :development
         
     | 
| 
       91 
77 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       92 
78 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       93 
79 
     | 
    
         
             
                requirements:
         
     | 
| 
         @@ -231,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       231 
217 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       232 
218 
     | 
    
         
             
            requirements: []
         
     | 
| 
       233 
219 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       234 
     | 
    
         
            -
            rubygems_version: 2. 
     | 
| 
      
 220 
     | 
    
         
            +
            rubygems_version: 2.5.1
         
     | 
| 
       235 
221 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       236 
222 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       237 
223 
     | 
    
         
             
            summary: Cache with lock and backup extensions
         
     |