prefixed_cache_store 0.1.1 → 0.2.1

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: 666a5779f05420890e01fae317d1d9112313d64f
4
- data.tar.gz: 6d59f1ff6a0718eb973b10c4d0cef7b53b8d5a98
3
+ metadata.gz: 921749f49838a742e100da56d3db616b8d3688fd
4
+ data.tar.gz: d1c158cd682accd7d97c0efef882e86f97d6677f
5
5
  SHA512:
6
- metadata.gz: c637194e6cb2b226facac0d987fc6288cd6b72fa0e40cfebd3f0fd182bd54531bacb59375538e7adc3223d95b0aae0e85fbe81baa8c4bc1373d7c299d1d0cd87
7
- data.tar.gz: 819cfb4ed6aefab1a2a9899df8e012fe47868ddeac0ff91080639f10314d458a0d1a13bd1a84dd3896fea321420b9cc0844f2e068cc47a34145f74fa97d3bb10
6
+ metadata.gz: 30ea1dd82faae352b59baa623ba331dc88c9cb53161c6761fee08db5e1e3e03a1796901720d622113dbee64dd08b8781ac1ae5ec1f43d2502bb4fb199cf215a4
7
+ data.tar.gz: 45f86b016de49a758f391732cd8bdac77ceca80dcfb596267dcbf8a7b7b139590a8012bec04d01fe67c1a8481dd11153fcb3cc1f752f5618a5d6bfa701ab4295
data/Gemfile CHANGED
@@ -6,7 +6,7 @@ source "http://rubygems.org"
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  group :development do
9
- gem "activesupport", "~> 3"
9
+ gem "activesupport", "~> 4"
10
10
  gem 'rspec', '~> 3.1'
11
11
  gem "bundler", "~> 1.0"
12
12
  gem "jeweler", "~> 2.0.1"
@@ -5,7 +5,7 @@ require 'forwardable'
5
5
  # for the namespace and the version number that can be ratched up to "unlink" all the related keys.
6
6
  # It assumes that the keys are being evicted automatically if they do not get used often.
7
7
  class PrefixedCacheStore
8
- VERSION = '0.1.1'
8
+ VERSION = '0.2.1'
9
9
 
10
10
  RETAIN_PREFIX_FOR_SECONDS = 10
11
11
 
@@ -31,6 +31,14 @@ class PrefixedCacheStore
31
31
  @store.fetch(prefix_key(name), options)
32
32
  end
33
33
  end
34
+
35
+ def fetch_multi(*names)
36
+ options = names.extract_options!
37
+ prefixed_keys = names.map{|e| prefix_key(e) }
38
+ @store.fetch_multi(*prefixed_keys, options) do | prefixed_key |
39
+ yield(unprefix_key(prefixed_key))
40
+ end
41
+ end
34
42
 
35
43
  def read(name, options=nil)
36
44
  @store.read(prefix_key(name), options)
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: prefixed_cache_store 0.1.1 ruby lib
5
+ # stub: prefixed_cache_store 0.2.1 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "prefixed_cache_store"
9
- s.version = "0.1.1"
9
+ s.version = "0.2.1"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Julik Tarkhanov"]
14
- s.date = "2014-10-28"
14
+ s.date = "2014-10-30"
15
15
  s.description = "Allows you to expire parts of your cache separately"
16
16
  s.email = "me@julik.nl"
17
17
  s.extra_rdoc_files = [
@@ -39,20 +39,20 @@ Gem::Specification.new do |s|
39
39
  s.specification_version = 4
40
40
 
41
41
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
42
- s.add_development_dependency(%q<activesupport>, ["~> 3"])
42
+ s.add_development_dependency(%q<activesupport>, ["~> 4"])
43
43
  s.add_development_dependency(%q<rspec>, ["~> 3.1"])
44
44
  s.add_development_dependency(%q<bundler>, ["~> 1.0"])
45
45
  s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
46
46
  s.add_development_dependency(%q<simplecov>, [">= 0"])
47
47
  else
48
- s.add_dependency(%q<activesupport>, ["~> 3"])
48
+ s.add_dependency(%q<activesupport>, ["~> 4"])
49
49
  s.add_dependency(%q<rspec>, ["~> 3.1"])
50
50
  s.add_dependency(%q<bundler>, ["~> 1.0"])
51
51
  s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
52
52
  s.add_dependency(%q<simplecov>, [">= 0"])
53
53
  end
54
54
  else
55
- s.add_dependency(%q<activesupport>, ["~> 3"])
55
+ s.add_dependency(%q<activesupport>, ["~> 4"])
56
56
  s.add_dependency(%q<rspec>, ["~> 3.1"])
57
57
  s.add_dependency(%q<bundler>, ["~> 1.0"])
58
58
  s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
@@ -95,6 +95,30 @@ describe PrefixedCacheStore do
95
95
  end
96
96
  end
97
97
 
98
+ describe 'fetch_multi' do
99
+ it 'performs a multi-fetch calling the backing store' do
100
+ some_store = ActiveSupport::Cache::MemoryStore.new
101
+
102
+ subject = described_class.new(some_store, 'pre')
103
+ expect(subject.current_version_number).to eq(0)
104
+
105
+ results = subject.fetch_multi('record1', 'record2') do | key_to_fetch |
106
+ "This is #{key_to_fetch}"
107
+ end
108
+
109
+ expect(results).to eq(["This is record1", "This is record2"])
110
+
111
+ results_from_cache = subject.fetch_multi('record1', 'record2') do | key_to_fetch |
112
+ raise "Should not be called"
113
+ end
114
+ expect(results_from_cache).to eq(["This is record1", "This is record2"])
115
+
116
+ expect(some_store.read("pre-version")).to eq(0)
117
+ expect(some_store.read("pre-0-record1")).to eq('This is record1')
118
+ expect(some_store.read("pre-0-record2")).to eq('This is record2')
119
+ end
120
+ end
121
+
98
122
  describe 'clear' do
99
123
  it 'bumps the version' do
100
124
  some_store = ActiveSupport::Cache::MemoryStore.new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prefixed_cache_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julik Tarkhanov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-28 00:00:00.000000000 Z
11
+ date: 2014-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3'
19
+ version: '4'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '3'
26
+ version: '4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement