memcached_store 0.12.3 → 0.12.5

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
  SHA1:
3
- metadata.gz: 563dc926185ce1401b90e4aa920ca2413b528d4b
4
- data.tar.gz: 13dba145ab363e3f48af73b57c683a1df769f3ba
3
+ metadata.gz: 49bdd6128d689edeb751f5144e0e657e52d82d67
4
+ data.tar.gz: 7b788ed80be35df4cd85784bf4b101f57de3e608
5
5
  SHA512:
6
- metadata.gz: 5be4ffa5bea1b5b3913dd7e46ada4efdbad576a657fe4ef9ffef106f854bbbe61eba5e984c6f9bbf97928a96fb6074c1f5f45382284adda537bff6e1fbe14519
7
- data.tar.gz: a512b4de11d846e161ee61072017152fa5be21f450a11d6f6579df38df480f0bd9cbd30f7064425b0a515bb252659e56fa146fa17eae86629cb215fd6860da8c
6
+ metadata.gz: dc602ee1dd34fbd99080b5f484a03d73c3a4e241c50438bdd5295fe68d0fa2ef921671a419d8be9d01fccab2f3df80df0f906e2dd0f361679014e2c873cc74ca
7
+ data.tar.gz: d3fd893033bb1dea5d6e72ee0754694d85918709f739fbbe7ac170fd89d5e7bd533975bf414ed8e17856d184c130bdd81fa827eed5f3dc8d1b8582479ee34542
data/Rakefile CHANGED
@@ -1,10 +1,10 @@
1
- #!/usr/bin/env rake
2
- require 'rake'
1
+ require 'bundler/gem_tasks'
3
2
  require 'rake/testtask'
3
+
4
4
  $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
5
5
  require "memcached_store/version"
6
6
 
7
- task :default => 'test'
7
+ task :default => :test
8
8
 
9
9
  desc 'run test suite with default parser'
10
10
  Rake::TestTask.new do |t|
@@ -14,19 +14,8 @@ Rake::TestTask.new do |t|
14
14
  t.verbose = true
15
15
  end
16
16
 
17
- task :gem => :build
18
- task :build do
19
- system "gem build memcached_store.gemspec"
20
- end
21
-
22
- task :install => :build do
23
- system "gem install memcached_store-#{MemcachedStore::VERSION}.gem"
24
- end
25
-
26
- task :release => :build do
17
+ task :tag => :build do
27
18
  system "git commit -m'Released version #{MemcachedStore::VERSION}' --allow-empty"
28
19
  system "git tag -a v#{MemcachedStore::VERSION} -m 'Tagging #{MemcachedStore::VERSION}'"
29
20
  system "git push --tags"
30
- system "gem push memcached_store-#{MemcachedStore::VERSION}.gem"
31
- system "rm memcached_store-#{MemcachedStore::VERSION}.gem"
32
21
  end
@@ -34,6 +34,10 @@ module ActiveSupport
34
34
  nil
35
35
  end
36
36
  end
37
+
38
+ def cas_raw?(options)
39
+ true
40
+ end
37
41
  end
38
42
  end
39
43
  end
@@ -71,7 +71,7 @@ module ActiveSupport
71
71
  key = namespaced_key(name, options)
72
72
 
73
73
  instrument(:cas, name, options) do
74
- @data.cas(key, expiration(options), options[:raw]) do |raw_value|
74
+ @data.cas(key, expiration(options), cas_raw?(options)) do |raw_value|
75
75
  entry = deserialize_entry(raw_value)
76
76
  value = yield entry.value
77
77
  serialize_entry(Entry.new(value, options), options)
@@ -88,7 +88,7 @@ module ActiveSupport
88
88
  keys_to_names = Hash[names.map{|name| [escape_key(namespaced_key(name, options)), name]}]
89
89
 
90
90
  instrument(:cas_multi, names, options) do
91
- @data.cas(keys_to_names.keys, expiration(options), options[:raw]) do |raw_values|
91
+ @data.cas(keys_to_names.keys, expiration(options), cas_raw?(options)) do |raw_values|
92
92
  values = {}
93
93
  raw_values.each do |key, raw_value|
94
94
  entry = deserialize_entry(raw_value)
@@ -185,6 +185,10 @@ module ActiveSupport
185
185
  entry
186
186
  end
187
187
 
188
+ def cas_raw?(options)
189
+ options[:raw]
190
+ end
191
+
188
192
  def expiration(options)
189
193
  expires_in = options[:expires_in].to_i
190
194
  if expires_in > 0 && !options[:raw]
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module MemcachedStore
3
- VERSION = "0.12.3"
3
+ VERSION = "0.12.5"
4
4
  end
@@ -3,7 +3,7 @@ require 'test_helper'
3
3
  class TestMemcachedSnappyStore < ActiveSupport::TestCase
4
4
 
5
5
  setup do
6
- @cache = ActiveSupport::Cache.lookup_store(:memcached_snappy_store)
6
+ @cache = ActiveSupport::Cache.lookup_store(:memcached_snappy_store, support_cas: true)
7
7
  @cache.clear
8
8
  end
9
9
 
@@ -98,4 +98,67 @@ class TestMemcachedSnappyStore < ActiveSupport::TestCase
98
98
  actual_cache_value = @cache.instance_variable_get(:@data).get(key, true)
99
99
  assert_equal 'value', Snappy.inflate(actual_cache_value)
100
100
  end
101
+
102
+ test "cas should use snappy to read and write cache entries" do
103
+ entry_value = { :omg => 'data' }
104
+ update_value = 'value'
105
+ key = 'ponies'
106
+
107
+ @cache.write(key, entry_value)
108
+ result = @cache.cas(key) do |v|
109
+ assert_equal entry_value, v
110
+ update_value
111
+ end
112
+ assert result
113
+ assert_equal update_value, @cache.read(key)
114
+
115
+ actual_cache_value = @cache.instance_variable_get(:@data).get(key, true)
116
+ serialized_entry = Snappy.inflate(actual_cache_value)
117
+ entry = Marshal.load(serialized_entry)
118
+ assert entry.is_a?(ActiveSupport::Cache::Entry)
119
+ assert_equal update_value, entry.value
120
+ end
121
+
122
+ test "cas should support raw entries that don't use marshal format" do
123
+ key = 'key'
124
+ @cache.write(key, 'value', :raw => true)
125
+ result = @cache.cas(key, :raw => true) do |v|
126
+ assert_equal 'value', v
127
+ 'new_value'
128
+ end
129
+ assert result
130
+ actual_cache_value = @cache.instance_variable_get(:@data).get(key, true)
131
+ assert_equal 'new_value', Snappy.inflate(actual_cache_value)
132
+ end
133
+
134
+ test "cas_multi should use snappy to read and write cache entries" do
135
+ keys = %w{ one two three }
136
+ values = keys.map{ |k| k * 10 }
137
+ update_hash = {"two" => "two" * 11}
138
+
139
+ keys.zip(values) { |k, v| @cache.write(k, v) }
140
+
141
+ result = @cache.cas_multi(*keys) do |hash|
142
+ assert_equal Hash[keys.zip(values)], hash
143
+ update_hash
144
+ end
145
+ assert result
146
+ assert_equal Hash[keys.zip(values)].merge(update_hash), @cache.read_multi(*keys)
147
+ end
148
+
149
+ test "cas_multi should support raw entries that don't use marshal format" do
150
+ keys = %w{ one two three }
151
+ values = keys.map{ |k| k * 10 }
152
+ update_hash = {"two" => "two" * 11}
153
+
154
+ keys.zip(values) { |k, v| @cache.write(k, v) }
155
+
156
+ result = @cache.cas_multi(*keys, :raw => true) do |hash|
157
+ assert_equal Hash[keys.zip(values)], hash
158
+ update_hash
159
+ end
160
+ assert result
161
+ actual_cache_value = @cache.instance_variable_get(:@data).get("two", true)
162
+ assert_equal update_hash["two"], Snappy.inflate(actual_cache_value)
163
+ end
101
164
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: memcached_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.3
4
+ version: 0.12.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Camilo Lopez
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-05-22 00:00:00.000000000 Z
14
+ date: 2014-06-04 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport