dalli 1.1.4 → 1.1.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of dalli might be problematic. Click here for more details.

data/History.md CHANGED
@@ -1,6 +1,20 @@
1
1
  Dalli Changelog
2
2
  =====================
3
3
 
4
+ WARNING: This is the last 1.1.x release. The next release will be 2.0
5
+ and not compatible with 1.x; lock dalli in your Gemfile so it does not
6
+ pick up 2.x releases:
7
+
8
+ gem 'dalli', '~> 1.1'
9
+
10
+ 1.1.5
11
+ =======
12
+
13
+ - Coerce input to incr/decr to integer via #to\_i [#165]
14
+ - Convert test suite to minitest/spec (crigor, #166)
15
+ - Fix encoding issue with keys [#162]
16
+ - Fix double namespacing with Rails and dalli\_store. [#160]
17
+
4
18
  1.1.4
5
19
  =======
6
20
 
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 Mike Perham
1
+ Copyright (c) 2012 Mike Perham
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -7,13 +7,13 @@ The name is a variant of Salvador Dali for his famous painting [The Persistence
7
7
 
8
8
  ![Persistence of Memory](http://www.virtualdali.com/assets/paintings/31PersistenceOfMemory.jpg)
9
9
 
10
- Dalli's development is sponsored by [Membase](http://www.membase.com/). Many thanks to them!
10
+ Dalli's initial development was sponsored by [CouchBase](http://www.couchbase.com/). Many thanks to them!
11
11
 
12
12
 
13
13
  Design
14
14
  ------------
15
15
 
16
- I decided to write Dalli after maintaining memcache-client for the last two years for a few specific reasons:
16
+ I decided to write Dalli after maintaining memcache-client for two years for a few specific reasons:
17
17
 
18
18
  0. The code is mostly old and gross. The bulk of the code is a single 1000 line .rb file.
19
19
  1. It has a lot of options that are infrequently used which complicate the codebase.
@@ -34,12 +34,14 @@ So a few notes. Dalli:
34
34
  Supported Ruby versions and implementations
35
35
  ------------------------------------------------
36
36
 
37
- Dalli is geared towards 1.9.2+ but known to work on
37
+ Dalli should work identically on:
38
38
 
39
- * Ruby 1.9.2
40
- * Ruby 1.9.3
41
- * Ruby 1.8.7
42
- * Rubinius 2.0 Preview
39
+ * JRuby 1.6+
40
+ * Ruby 1.9.2+
41
+ * Ruby 1.8.7+
42
+ * Rubinius 2.0
43
+
44
+ If you have problems, please enter an issue.
43
45
 
44
46
 
45
47
  Installation and Usage
@@ -163,9 +165,7 @@ Eric Wong - for help using his [kgio](http://unicorn.bogomips.org/kgio/index.htm
163
165
 
164
166
  Brian Mitchell - for his remix-stash project which was helpful when implementing and testing the binary protocol support.
165
167
 
166
- [Membase](http://membase.com) - for their project sponsorship
167
-
168
- [Bootspring](http://bootspring.com) is my Ruby and Rails consulting company. We specialize in Ruby infrastructure, performance and scalability tuning for Rails applications. If you need help, please [contact us](mailto:info@bootspring.com) today.
168
+ [CouchBase](http://couchbase.com) - for their project sponsorship
169
169
 
170
170
 
171
171
  Author
@@ -177,4 +177,4 @@ Mike Perham, mperham@gmail.com, [mikeperham.com](http://mikeperham.com), [@mperh
177
177
  Copyright
178
178
  -----------
179
179
 
180
- Copyright (c) 2010 Mike Perham. See LICENSE for details.
180
+ Copyright (c) 2012 Mike Perham. See LICENSE for details.
data/dalli.gemspec CHANGED
@@ -23,9 +23,9 @@ Gem::Specification.new do |s|
23
23
  s.require_paths = ["lib"]
24
24
  s.summary = %q{High performance memcached client for Ruby}
25
25
  s.test_files = Dir.glob("test/**/*")
26
- s.add_development_dependency(%q<shoulda>, [">= 0"])
26
+ s.add_development_dependency(%q<mini_shoulda>, [">= 0"])
27
27
  s.add_development_dependency(%q<mocha>, [">= 0"])
28
- s.add_development_dependency(%q<rails>, [">= 3.0.0"])
28
+ s.add_development_dependency(%q<rails>, [">= 3.0"])
29
29
  s.add_development_dependency(%q<memcache-client>, [">= 1.8.5"])
30
30
  end
31
31
 
@@ -36,6 +36,7 @@ module ActiveSupport
36
36
 
37
37
  addresses << 'localhost:11211' if addresses.empty?
38
38
  options = options.dup
39
+ options.delete(:namespace)
39
40
  # Extend expiry by stale TTL or else memcached will never return stale data.
40
41
  # See ActiveSupport::Cache#fetch.
41
42
  options[:expires_in] += options[:race_condition_ttl] if options[:expires_in] && options[:race_condition_ttl]
@@ -148,8 +149,8 @@ module ActiveSupport
148
149
 
149
150
  private
150
151
  def escape_key(key)
151
- key = key.to_s
152
- key = key.force_encoding('ASCII-8BIT') if key.respond_to? :force_encoding
152
+ key = key.to_s.dup
153
+ key = key.force_encoding('BINARY') if key.respond_to? :force_encoding
153
154
  key = key.gsub(ESCAPE_KEY_CHARS){|match| "%#{match.getbyte(0).to_s(16).upcase}"}
154
155
  key = "#{key[0, 213]}:md5:#{Digest::MD5.hexdigest(key)}" if key.size > 250
155
156
  key
data/lib/dalli/client.rb CHANGED
@@ -183,7 +183,7 @@ module Dalli
183
183
 
184
184
  ##
185
185
  # Incr adds the given amount to the counter on the memcached server.
186
- # Amt must be a positive value.
186
+ # Amt must be a positive integer value.
187
187
  #
188
188
  # If default is nil, the counter must already exist or the operation
189
189
  # will fail and will return nil. Otherwise this method will return
@@ -195,12 +195,12 @@ module Dalli
195
195
  def incr(key, amt=1, ttl=nil, default=nil)
196
196
  raise ArgumentError, "Positive values only: #{amt}" if amt < 0
197
197
  ttl ||= @options[:expires_in]
198
- perform(:incr, key, amt, ttl, default)
198
+ perform(:incr, key, amt.to_i, ttl, default)
199
199
  end
200
200
 
201
201
  ##
202
202
  # Decr subtracts the given amount from the counter on the memcached server.
203
- # Amt must be a positive value.
203
+ # Amt must be a positive integer value.
204
204
  #
205
205
  # memcached counters are unsigned and cannot hold negative values. Calling
206
206
  # decr on a counter which is 0 will just return 0.
@@ -215,7 +215,7 @@ module Dalli
215
215
  def decr(key, amt=1, ttl=nil, default=nil)
216
216
  raise ArgumentError, "Positive values only: #{amt}" if amt < 0
217
217
  ttl ||= @options[:expires_in]
218
- perform(:decr, key, amt, ttl, default)
218
+ perform(:decr, key, amt.to_i, ttl, default)
219
219
  end
220
220
 
221
221
  ##
data/lib/dalli/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dalli
2
- VERSION = '1.1.4'
2
+ VERSION = '1.1.5'
3
3
  end
@@ -14,7 +14,7 @@ module Rack
14
14
  super
15
15
  mserv = @default_options[:memcache_server]
16
16
  mopts = @default_options.reject{|k,v| !DEFAULT_OPTIONS.include? k }
17
- @pool = options[:cache] || Dalli::Client.new(mserv, mopts)
17
+ @pool = options[:cache] || ::Dalli::Client.new(mserv, mopts)
18
18
  end
19
19
 
20
20
  def generate_sid
@@ -141,7 +141,6 @@ end
141
141
  class ActionController::IntegrationTest < ActiveSupport::TestCase
142
142
  def self.build_app(routes = nil)
143
143
  RoutedRackApp.new(routes || ActionDispatch::Routing::RouteSet.new) do |middleware|
144
- middleware.use "ActionDispatch::ShowExceptions"
145
144
  middleware.use "ActionDispatch::Callbacks"
146
145
  middleware.use "ActionDispatch::ParamsParser"
147
146
  middleware.use "ActionDispatch::Cookies"
@@ -1,9 +1,9 @@
1
1
  require 'helper'
2
2
  require 'benchmark'
3
+ require 'active_support/cache/dalli_store'
3
4
 
4
- class TestBenchmark < Test::Unit::TestCase
5
-
6
- def setup
5
+ describe 'performance' do
6
+ before do
7
7
  puts "Testing #{Dalli::VERSION} with #{RUBY_DESCRIPTION}"
8
8
  # We'll use a simple @value to try to avoid spending time in Marshal,
9
9
  # which is a constant penalty that both clients have to pay
@@ -21,13 +21,29 @@ class TestBenchmark < Test::Unit::TestCase
21
21
  @counter = 'counter'
22
22
  end
23
23
 
24
- def test_benchmark
24
+ should 'run benchmarks' do
25
25
  memcached do
26
26
 
27
27
  Benchmark.bm(31) do |x|
28
28
 
29
29
  n = 2500
30
30
 
31
+ @ds = ActiveSupport::Cache::DalliStore.new(@servers)
32
+ x.report("mixed:rails:dalli") do
33
+ n.times do
34
+ @ds.read @key1
35
+ @ds.write @key2, @value
36
+ @ds.fetch(@key3) { @value }
37
+ @ds.fetch(@key2) { @value }
38
+ @ds.fetch(@key1) { @value }
39
+ @ds.write @key2, @value, :unless_exists => true
40
+ @ds.delete @key2
41
+ @ds.increment @counter, 1, :initial => 100
42
+ @ds.increment @counter, 1, :expires_in => 12
43
+ @ds.decrement @counter, 1
44
+ end
45
+ end
46
+
31
47
  @m = Dalli::Client.new(@servers)
32
48
  x.report("set:plain:dalli") do
33
49
  n.times do
@@ -153,18 +169,19 @@ class TestBenchmark < Test::Unit::TestCase
153
169
 
154
170
  @m = Dalli::Client.new(@servers)
155
171
  x.report("incr:ruby:dalli") do
172
+ counter = 'foocount'
156
173
  n.times do
157
- @m.incr @counter, 1, 0, 1
174
+ @m.incr counter, 1, 0, 1
158
175
  end
159
176
  n.times do
160
- @m.decr @counter, 1
177
+ @m.decr counter, 1
161
178
  end
162
179
 
163
- assert_equal 0, @m.incr(@counter, 0)
180
+ assert_equal 0, @m.incr(counter, 0)
164
181
  end
165
182
 
166
183
  end
167
184
  end
168
185
 
169
186
  end
170
- end
187
+ end
data/test/helper.rb CHANGED
@@ -7,8 +7,10 @@ gem 'rails', WANT_RAILS_VERSION
7
7
  require 'rails'
8
8
  puts "Testing with Rails #{Rails.version}"
9
9
 
10
- require 'test/unit'
11
- require 'shoulda'
10
+ require 'minitest/spec'
11
+ require 'mini_shoulda'
12
+ require 'minitest/pride'
13
+ require 'minitest/autorun'
12
14
  require 'memcached_mock'
13
15
  require 'mocha'
14
16
 
@@ -18,16 +20,17 @@ require 'logger'
18
20
  Dalli.logger = Logger.new(STDOUT)
19
21
  Dalli.logger.level = Logger::ERROR
20
22
 
21
- class Test::Unit::TestCase
23
+ class MiniTest::Spec
22
24
  include MemcachedMock::Helper
23
25
 
24
26
  def assert_error(error, regexp=nil, &block)
25
- ex = assert_raise(error, &block)
27
+ ex = assert_raises(error, &block)
26
28
  assert_match(regexp, ex.message, "#{ex.class.name}: #{ex.message}\n#{ex.backtrace.join("\n\t")}")
27
29
  end
28
30
 
29
31
  def with_activesupport
30
32
  require 'active_support/all'
33
+ require 'active_support/cache/dalli_store'
31
34
  yield
32
35
  end
33
36
 
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
  require 'helper'
3
3
 
4
- class TestActiveSupport < Test::Unit::TestCase
4
+ describe 'ActiveSupport' do
5
5
  context 'active_support caching' do
6
6
 
7
7
  should 'support fetch' do
@@ -1,8 +1,8 @@
1
1
  require 'helper'
2
2
 
3
- class TestCompatibility < Test::Unit::TestCase
3
+ describe 'Compatibility' do
4
4
 
5
- def setup
5
+ before do
6
6
  require 'dalli/memcache-client'
7
7
  end
8
8
 
@@ -26,8 +26,8 @@ class TestCompatibility < Test::Unit::TestCase
26
26
 
27
27
  end
28
28
 
29
- def teardown
29
+ after do
30
30
  Dalli::Client.compatibility_mode = false
31
31
  end
32
32
 
33
- end
33
+ end
data/test/test_dalli.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'helper'
2
2
  require 'memcached_mock'
3
3
 
4
- class TestDalli < Test::Unit::TestCase
4
+ describe 'Dalli' do
5
5
 
6
6
  should "default to localhost:11211" do
7
7
  dc = Dalli::Client.new
@@ -251,7 +251,7 @@ class TestDalli < Test::Unit::TestCase
251
251
 
252
252
  # rollover the 64-bit value, we'll get something undefined.
253
253
  resp = dc.incr('big', 1)
254
- assert_not_equal 0x10000000000000000, resp
254
+ 0x10000000000000000.wont_equal resp
255
255
  dc.reset
256
256
  end
257
257
  end
@@ -273,7 +273,7 @@ class TestDalli < Test::Unit::TestCase
273
273
  should "pass a simple smoke test" do
274
274
  memcached do |dc|
275
275
  resp = dc.flush
276
- assert_not_nil resp
276
+ resp.wont_be_nil
277
277
  assert_equal [true, true], resp
278
278
 
279
279
  assert_equal true, dc.set(:foo, 'bar')
@@ -343,7 +343,7 @@ class TestDalli < Test::Unit::TestCase
343
343
  cache.set('b', 11)
344
344
  inc = cache.incr('cat', 10, 0, 10)
345
345
  cache.set('f', 'zzz')
346
- assert_not_nil(cache.cas('f') do |value|
346
+ wont_be_nil(cache.cas('f') do |value|
347
347
  value << 'z'
348
348
  end)
349
349
  assert_equal false, cache.add('a', 11)
@@ -399,7 +399,7 @@ class TestDalli < Test::Unit::TestCase
399
399
  dalli = Dalli::Client.new(dc.instance_variable_get(:@servers), :compression => true)
400
400
 
401
401
  value = "0"*1024*1024
402
- assert_raise Dalli::DalliError, /too large/ do
402
+ assert_raises Dalli::DalliError, /too large/ do
403
403
  dc.set('verylarge', value)
404
404
  end
405
405
  dalli.set('verylarge', value)
@@ -2,7 +2,7 @@
2
2
  require 'helper'
3
3
  require 'memcached_mock'
4
4
 
5
- class TestEncoding < Test::Unit::TestCase
5
+ describe 'Encoding' do
6
6
 
7
7
  context 'using a live server' do
8
8
  should 'support i18n content' do
@@ -14,7 +14,7 @@ class TestEncoding < Test::Unit::TestCase
14
14
  assert_equal utf8, dc.get(key)
15
15
 
16
16
  # keys must be ASCII
17
- assert_raise ArgumentError, /illegal character/ do
17
+ assert_raises ArgumentError, /illegal character/ do
18
18
  dc.set(bad_key, utf8)
19
19
  end
20
20
  end
@@ -33,11 +33,11 @@ class TestEncoding < Test::Unit::TestCase
33
33
  should 'not allow non-ASCII keys' do
34
34
  memcached do |dc|
35
35
  key = 'fooƒ'
36
- assert_raise ArgumentError do
36
+ assert_raises ArgumentError do
37
37
  dc.set(key, 'bar')
38
38
  end
39
39
  end
40
40
  end
41
41
 
42
42
  end
43
- end
43
+ end
@@ -1,6 +1,6 @@
1
1
  require 'helper'
2
2
 
3
- class TestFailover < Test::Unit::TestCase
3
+ describe 'FailOver' do
4
4
  context 'assuming some bad servers' do
5
5
 
6
6
  should 'silently reconnect if server hiccups' do
@@ -37,7 +37,7 @@ class TestFailover < Test::Unit::TestCase
37
37
 
38
38
  memcached_kill(29126)
39
39
 
40
- assert_raise Dalli::RingError, :message => "No server available" do
40
+ assert_raises Dalli::RingError, :message => "No server available" do
41
41
  dc.set 'foo', 'bar'
42
42
  end
43
43
  end
data/test/test_network.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  require 'helper'
2
2
 
3
- class TestNetwork < Test::Unit::TestCase
3
+ describe 'Network' do
4
4
 
5
5
  context 'assuming a bad network' do
6
6
 
7
7
  should 'handle no server available' do
8
- assert_raise Dalli::RingError, :message => "No server available" do
8
+ assert_raises Dalli::RingError, :message => "No server available" do
9
9
  dc = Dalli::Client.new 'localhost:19333'
10
10
  dc.get 'foo'
11
11
  end
@@ -14,7 +14,7 @@ class TestNetwork < Test::Unit::TestCase
14
14
  context 'with a fake server' do
15
15
  should 'handle connection reset' do
16
16
  memcached_mock(lambda {|sock| sock.close }) do
17
- assert_raise Dalli::RingError, :message => "No server available" do
17
+ assert_raises Dalli::RingError, :message => "No server available" do
18
18
  dc = Dalli::Client.new('localhost:19123')
19
19
  dc.get('abc')
20
20
  end
@@ -23,7 +23,7 @@ class TestNetwork < Test::Unit::TestCase
23
23
 
24
24
  should 'handle malformed response' do
25
25
  memcached_mock(lambda {|sock| sock.write('123') }) do
26
- assert_raise Dalli::RingError, :message => "No server available" do
26
+ assert_raises Dalli::RingError, :message => "No server available" do
27
27
  dc = Dalli::Client.new('localhost:19123')
28
28
  dc.get('abc')
29
29
  end
@@ -32,7 +32,7 @@ class TestNetwork < Test::Unit::TestCase
32
32
 
33
33
  should 'handle connect timeouts' do
34
34
  memcached_mock(lambda {|sock| sleep(0.6); sock.close }, :delayed_start) do
35
- assert_raise Dalli::RingError, :message => "No server available" do
35
+ assert_raises Dalli::RingError, :message => "No server available" do
36
36
  dc = Dalli::Client.new('localhost:19123')
37
37
  dc.get('abc')
38
38
  end
@@ -41,7 +41,7 @@ class TestNetwork < Test::Unit::TestCase
41
41
 
42
42
  should 'handle read timeouts' do
43
43
  memcached_mock(lambda {|sock| sleep(0.6); sock.write('giraffe') }) do
44
- assert_raise Dalli::RingError, :message => "No server available" do
44
+ assert_raises Dalli::RingError, :message => "No server available" do
45
45
  dc = Dalli::Client.new('localhost:19123')
46
46
  dc.get('abc')
47
47
  end
data/test/test_ring.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'helper'
2
2
 
3
- class TestRing < Test::Unit::TestCase
3
+ describe 'Ring' do
4
4
 
5
5
  context 'a ring of servers' do
6
6
 
@@ -17,7 +17,7 @@ class TestRing < Test::Unit::TestCase
17
17
 
18
18
  should 'raise when no servers are available/defined' do
19
19
  ring = Dalli::Ring.new([], {})
20
- assert_raise Dalli::RingError, :message => "No server available" do
20
+ assert_raises Dalli::RingError, :message => "No server available" do
21
21
  ring.server_for_key('test')
22
22
  end
23
23
  end
@@ -28,7 +28,7 @@ class TestRing < Test::Unit::TestCase
28
28
  Dalli::Server.new("localhost:12345"),
29
29
  ]
30
30
  ring = Dalli::Ring.new(servers, {})
31
- assert_raise Dalli::RingError, :message => "No server available" do
31
+ assert_raises Dalli::RingError, :message => "No server available" do
32
32
  ring.server_for_key('test')
33
33
  end
34
34
  end
@@ -52,7 +52,7 @@ class TestRing < Test::Unit::TestCase
52
52
  Dalli::Server.new("localhost:12346"),
53
53
  ]
54
54
  ring = Dalli::Ring.new(servers, {})
55
- assert_raise Dalli::RingError, :message => "No server available" do
55
+ assert_raises Dalli::RingError, :message => "No server available" do
56
56
  ring.server_for_key('test')
57
57
  end
58
58
  end
@@ -71,12 +71,12 @@ class TestRing < Test::Unit::TestCase
71
71
  end
72
72
 
73
73
  should 'detect when a dead server is up again' do
74
- memcached(29125) do
74
+ memcached(19997) do
75
75
  down_retry_delay = 0.5
76
- dc = Dalli::Client.new(['localhost:29125', 'localhost:29126'], :down_retry_delay => down_retry_delay)
76
+ dc = Dalli::Client.new(['localhost:19997', 'localhost:19998'], :down_retry_delay => down_retry_delay)
77
77
  assert_equal 1, dc.stats.values.compact.count
78
78
 
79
- memcached(29126) do
79
+ memcached(19998) do
80
80
  assert_equal 2, dc.stats.values.compact.count
81
81
  end
82
82
  end
data/test/test_sasl.rb CHANGED
@@ -1,16 +1,16 @@
1
1
  require 'helper'
2
2
 
3
- class TestSasl < Test::Unit::TestCase
3
+ describe 'Sasl' do
4
4
 
5
5
  context 'a server requiring authentication' do
6
6
 
7
7
  context 'without authentication credentials' do
8
- setup do
8
+ before do
9
9
  ENV['MEMCACHE_USERNAME'] = 'foo'
10
10
  ENV['MEMCACHE_PASSWORD'] = 'wrongpwd'
11
11
  end
12
12
 
13
- teardown do
13
+ after do
14
14
  ENV['MEMCACHE_USERNAME'] = nil
15
15
  ENV['MEMCACHE_PASSWORD'] = nil
16
16
  end
@@ -43,12 +43,12 @@ class TestSasl < Test::Unit::TestCase
43
43
  #
44
44
  # with password 'testtest'
45
45
  context 'in an authenticated environment' do
46
- setup do
46
+ before do
47
47
  ENV['MEMCACHE_USERNAME'] = 'testuser'
48
48
  ENV['MEMCACHE_PASSWORD'] = 'testtest'
49
49
  end
50
50
 
51
- teardown do
51
+ after do
52
52
  ENV['MEMCACHE_USERNAME'] = nil
53
53
  ENV['MEMCACHE_PASSWORD'] = nil
54
54
  end
@@ -216,10 +216,9 @@ class TestSessionStore < ActionController::IntegrationTest
216
216
 
217
217
  @app = self.class.build_app(set) do |middleware|
218
218
  middleware.use ActionDispatch::Session::DalliStore, options
219
- middleware.delete "ActionDispatch::ShowExceptions"
220
219
  end
221
220
 
222
221
  yield
223
222
  end
224
223
  end
225
- end
224
+ end
@@ -4,7 +4,7 @@ if defined?(RUBY_ENGINE) && RUBY_ENGINE != 'jruby'
4
4
  begin
5
5
  require 'em-spec/test'
6
6
 
7
- class TestSynchrony < Test::Unit::TestCase
7
+ describe 'Synchrony' do
8
8
  include EM::TestHelper
9
9
 
10
10
  context 'using a live server' do
@@ -156,7 +156,7 @@ class TestSynchrony < Test::Unit::TestCase
156
156
  dalli = Dalli::Client.new(dc.instance_variable_get(:@servers), :compression => true, :async => true)
157
157
 
158
158
  value = "0"*1024*1024
159
- assert_raise Dalli::DalliError, /too large/ do
159
+ assert_raises Dalli::DalliError, /too large/ do
160
160
  dc.set('verylarge', value)
161
161
  end
162
162
  dalli.set('verylarge', value)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dalli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-11 00:00:00.000000000 Z
12
+ date: 2012-02-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: shoulda
16
- requirement: &70233391291560 !ruby/object:Gem::Requirement
15
+ name: mini_shoulda
16
+ requirement: &70232123468080 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70233391291560
24
+ version_requirements: *70232123468080
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mocha
27
- requirement: &70233391290560 !ruby/object:Gem::Requirement
27
+ requirement: &70232123467180 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,21 +32,21 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70233391290560
35
+ version_requirements: *70232123467180
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rails
38
- requirement: &70233391290000 !ruby/object:Gem::Requirement
38
+ requirement: &70232123465920 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
42
42
  - !ruby/object:Gem::Version
43
- version: 3.0.0
43
+ version: '3.0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70233391290000
46
+ version_requirements: *70232123465920
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: memcache-client
49
- requirement: &70233391289240 !ruby/object:Gem::Requirement
49
+ requirement: &70232123465100 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: 1.8.5
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70233391289240
57
+ version_requirements: *70232123465100
58
58
  description: High performance memcached client for Ruby
59
59
  email: mperham@gmail.com
60
60
  executables: []
@@ -117,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
117
  version: '0'
118
118
  requirements: []
119
119
  rubyforge_project:
120
- rubygems_version: 1.8.10
120
+ rubygems_version: 1.8.15
121
121
  signing_key:
122
122
  specification_version: 3
123
123
  summary: High performance memcached client for Ruby