memcached_store 0.11.2 → 0.11.3

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: 77f6ff3dcde9c204c41292c561764f19b198a552
4
- data.tar.gz: 3b784d277f5cf922082e31fc007290db685d846e
3
+ metadata.gz: 0004cd75061b888d9a2f577b814ebbebb6641e0c
4
+ data.tar.gz: 1094e612fcbbacea703db393fb4aa1d5188675a8
5
5
  SHA512:
6
- metadata.gz: eac52dea6f5850280f2ff75f5ee45628af7d9416f90de3bf81f3b6634e8f9af5a7fda438dec36ab3aa9b62f4594733aa8e297e914da1b615e628bbfadd08694a
7
- data.tar.gz: 4509b4c17cc097d654abbc461cc24394ca74f338345c379eccf808c7bafa9c184a8df0d9ab7a033d4e3ec48e9de396e4b115dfde03d5e9b07304c697f2242ea2
6
+ metadata.gz: e9fa84e1fb05038ae55dcb562c65c191f69aa716e9272cf4533414f116865254a7f3f7dd2b781bc68230b6755e6f00d51c6e617c722887728a60c28d24a0f098
7
+ data.tar.gz: f60ddc1f132a2956d3810b3295c4ed8c07bc8a21b7393e10c59cd0a253d26210d69f3af824d0428047d756910b7d797a1a9984f1b6a515e2b5cb256b49ea14be
data/.travis.yml CHANGED
@@ -4,7 +4,11 @@ rvm:
4
4
  - 1.9.3
5
5
  - 2.0.0
6
6
  - 2.1.0
7
+ - 2.1.1
7
8
  env:
8
- - "AS_VERSION=3.2.16"
9
- - "AS_VERSION=4.0.2"
10
- - "AS_VERSION=4.1.0.beta1"
9
+ - "AS_VERSION=3.2.18"
10
+ - "AS_VERSION=4.0.5"
11
+ - "AS_VERSION=4.1.0"
12
+ matrix:
13
+ allow_failures:
14
+ - env: "AS_VERSION=4.1.0"
data/Gemfile CHANGED
@@ -3,7 +3,7 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in rails_cache_adapters.gemspec
4
4
  gemspec
5
5
 
6
- version = ENV["AS_VERSION"] || "3.2.16"
6
+ version = ENV["AS_VERSION"] || "4.0.5"
7
7
  as_version = case version
8
8
  when "master"
9
9
  {:github => "rails/rails"}
@@ -11,5 +11,5 @@ else
11
11
  "~> #{version}"
12
12
  end
13
13
 
14
- gem 'minitest', '~> 4.0' if version == "3.2.16"
14
+ gem 'minitest', '~> 4.0' if version == "3.2.18"
15
15
  gem "activesupport", as_version
data/README.md CHANGED
@@ -1,35 +1,51 @@
1
- # MemcachedSnappyStore
1
+ # ActiveSupport MemcachedStore
2
2
 
3
- ActiveSupport cache store that adds snappy compression at the cost of making the ```incr, decr, add``` operations unavailable.
3
+ This gem includes two memcached stores.
4
+
5
+ ### MemcachedStore
6
+
7
+ ActiveSupport memcached store. This wraps the memcached gem into a ActiveSupport::Cache::Store, so it could be used inside Rails.
8
+
9
+ ### MemcachedSnappyStore
10
+
11
+ ActiveSupport cache store that adds snappy compression at the cost of making the ```incr, decr``` operations unavailable.
4
12
 
5
13
  ## Installation
6
14
 
7
15
  Add this line to your application's Gemfile:
8
16
 
9
- gem 'memcached_store'
17
+ ```
18
+ gem 'memcached_store'
19
+ ```
10
20
 
11
21
  And then execute:
12
22
 
13
- $ bundle
23
+ ```bash
24
+ $ bundle
25
+ ```
14
26
 
15
27
  Or install it yourself as:
16
28
 
17
- $ gem install memcached_store
29
+ ```bash
30
+ $ gem install memcached_store
31
+ ```
18
32
 
19
33
  ## Usage
20
34
 
21
35
  In your environment file:
22
36
 
23
37
  ```ruby
38
+ # for memcached store
39
+ config.cache_store = :memcached_store,
24
40
 
25
- config.cache_store = :memcached_snappy_store,
26
- Memcached::Rails.new(:servers => ['memcached1.foo.com', 'memcached2.foo.com'])
27
-
41
+ # for snappy store
42
+ config.cache_store = :memcached_snappy_store,
43
+ Memcached::Rails.new(:servers => ['memcached1.foo.com', 'memcached2.foo.com'])
28
44
  ```
29
45
 
30
46
  ## Code status
31
47
 
32
- [![Build Status](https://travis-ci.org/Shopify/memcached_store.png?branch=accept-list-of-servers-in-options)](https://travis-ci.org/Shopify/memcached_store)
48
+ [![Build Status](https://travis-ci.org/Shopify/memcached_store.svg?branch=master)](https://travis-ci.org/Shopify/memcached_store)
33
49
 
34
50
  ## Contributing
35
51
 
@@ -1,5 +1,11 @@
1
+ begin
2
+ require 'snappy'
3
+ rescue LoadError => e
4
+ $stderr.puts "You don't have snappy installed in your application. Please add `gem \"snappy\"` to your Gemfile and run bundle install"
5
+ raise e
6
+ end
7
+
1
8
  require 'active_support/cache/memcached_store'
2
- require 'snappy'
3
9
 
4
10
  module ActiveSupport
5
11
  module Cache
@@ -14,22 +20,11 @@ module ActiveSupport
14
20
  raise UnsupportedOperation.new("decrement is not supported by: #{self.class.name}")
15
21
  end
16
22
 
17
- protected
18
-
19
- def write_entry(key, entry, options)
20
- # normally unless_exist would make this method use add, add will not make sense on compressed entries
21
- raise UnsupportedOperation.new("unless_exist would try to use the unsupported add method") if options && options[:unless_exist]
22
-
23
- serialized_value = options[:raw] ? entry.value.to_s : Marshal.dump(entry)
24
- expires_in = options[:expires_in].to_i
25
- if expires_in > 0 && !options[:raw]
26
- # Set the memcache expire a few minutes in the future to support race condition ttls on read
27
- expires_in += 5.minutes
28
- end
29
-
30
- serialized_compressed_value = Snappy.deflate(serialized_value)
31
-
32
- @data.set(escape_key(key), serialized_compressed_value, expires_in, true)
23
+ private
24
+ def serialize_entry(entry, options)
25
+ value = options[:raw] ? entry.value.to_s : Marshal.dump(entry)
26
+ options[:raw] = true
27
+ Snappy.deflate(value)
33
28
  end
34
29
 
35
30
  def deserialize_entry(compressed_value)
@@ -106,12 +106,12 @@ module ActiveSupport
106
106
 
107
107
  def write_entry(key, entry, options) # :nodoc:
108
108
  method = options && options[:unless_exist] ? :add : :set
109
- value = options[:raw] ? entry.value.to_s : entry
110
109
  expires_in = options[:expires_in].to_i
111
110
  if expires_in > 0 && !options[:raw]
112
111
  # Set the memcache expire a few minutes in the future to support race condition ttls on read
113
112
  expires_in += 5.minutes
114
113
  end
114
+ value = serialize_entry(entry, options)
115
115
  @data.send(method, escape_key(key), value, expires_in, options[:raw])
116
116
  rescue *NONFATAL_EXCEPTIONS => e
117
117
  @data.log_exception(e)
@@ -145,6 +145,11 @@ module ActiveSupport
145
145
  end
146
146
  end
147
147
 
148
+ def serialize_entry(entry, options)
149
+ entry = entry.value.to_s if options[:raw]
150
+ entry
151
+ end
152
+
148
153
  end
149
154
  end
150
155
  end
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module MemcachedStore
3
- VERSION = "0.11.2"
3
+ VERSION = "0.11.3"
4
4
  end
@@ -16,11 +16,11 @@ Gem::Specification.new do |gem|
16
16
  gem.require_paths = ["lib"]
17
17
  gem.version = MemcachedStore::VERSION
18
18
  gem.add_runtime_dependency "activesupport", ">= 3.2"
19
- gem.add_runtime_dependency "snappy", "0.0.4"
20
- gem.add_runtime_dependency "memcached", "~> 1.7.2"
19
+ gem.add_runtime_dependency "memcached", "~> 1.8.0"
21
20
 
22
21
  gem.add_development_dependency "rake"
23
22
  gem.add_development_dependency "minitest"
24
23
  gem.add_development_dependency "mocha"
25
24
  gem.add_development_dependency "timecop"
25
+ gem.add_development_dependency "snappy"
26
26
  end
@@ -19,8 +19,8 @@ class TestMemcachedSnappyStore < ActiveSupport::TestCase
19
19
  end
20
20
  end
21
21
 
22
- test "write should not allow the implicit add operation when unless_exist is passed to write" do
23
- assert_raise(ActiveSupport::Cache::MemcachedSnappyStore::UnsupportedOperation) do
22
+ test "write should allow the implicit add operation when unless_exist is passed to write" do
23
+ assert_nothing_raised(ActiveSupport::Cache::MemcachedSnappyStore::UnsupportedOperation) do
24
24
  @cache.write('foo', 'bar', :unless_exist => true)
25
25
  end
26
26
  end
@@ -314,6 +314,15 @@ class TestMemcachedStore < ActiveSupport::TestCase
314
314
  assert_equal [21211, 11211], cache.instance_variable_get(:@data).servers.map(&:port)
315
315
  end
316
316
 
317
+ def test_namespace_without_servers
318
+ options = {namespace: 'foo:'}
319
+ cache = ActiveSupport::Cache.lookup_store(:memcached_store, options)
320
+ client = cache.instance_variable_get(:@data)
321
+ assert_equal [11211], client.servers.map(&:port)
322
+ assert_equal "", client.prefix_key, "should not send the namespace to the client"
323
+ assert_equal "foo::key", cache.send(:namespaced_key, "key", cache.options)
324
+ end
325
+
317
326
  private
318
327
 
319
328
  def expect_not_found
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.11.2
4
+ version: 0.11.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Camilo Lopez
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-01-24 00:00:00.000000000 Z
13
+ date: 2014-05-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -27,35 +27,35 @@ dependencies:
27
27
  - !ruby/object:Gem::Version
28
28
  version: '3.2'
29
29
  - !ruby/object:Gem::Dependency
30
- name: snappy
30
+ name: memcached
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - '='
33
+ - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: 0.0.4
35
+ version: 1.8.0
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - '='
40
+ - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: 0.0.4
42
+ version: 1.8.0
43
43
  - !ruby/object:Gem::Dependency
44
- name: memcached
44
+ name: rake
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - "~>"
47
+ - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 1.7.2
50
- type: :runtime
49
+ version: '0'
50
+ type: :development
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - "~>"
54
+ - - ">="
55
55
  - !ruby/object:Gem::Version
56
- version: 1.7.2
56
+ version: '0'
57
57
  - !ruby/object:Gem::Dependency
58
- name: rake
58
+ name: minitest
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - ">="
@@ -69,7 +69,7 @@ dependencies:
69
69
  - !ruby/object:Gem::Version
70
70
  version: '0'
71
71
  - !ruby/object:Gem::Dependency
72
- name: minitest
72
+ name: mocha
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - ">="
@@ -83,7 +83,7 @@ dependencies:
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
85
  - !ruby/object:Gem::Dependency
86
- name: mocha
86
+ name: timecop
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - ">="
@@ -97,7 +97,7 @@ dependencies:
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  - !ruby/object:Gem::Dependency
100
- name: timecop
100
+ name: snappy
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
103
  - - ">="
@@ -154,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
154
  version: '0'
155
155
  requirements: []
156
156
  rubyforge_project:
157
- rubygems_version: 2.2.0
157
+ rubygems_version: 2.2.2
158
158
  signing_key:
159
159
  specification_version: 4
160
160
  summary: Plugin-able Memcached adapters to add features (compression, safety)