garner 0.5.1 → 0.5.2

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: be2617701ad4ec815fb797f21249d19df49c35d5
4
- data.tar.gz: 3b5dca339f0b0aa5926bd4dd210c58c90ec7c658
3
+ metadata.gz: 84c7b960a4a1d14289fcfe1966869f130a100821
4
+ data.tar.gz: 54b2913e7ec83f309c7413253ad603b31812ecad
5
5
  SHA512:
6
- metadata.gz: 4df4d8bed3cb46aad815fb29fafa791e2f786521ca76849eef16bad67d7da54e52076f85a13c36811a9ca6750813b41cff7e85c3e2b5ae64d5c03b4e953fe7ed
7
- data.tar.gz: 20ef731da18baf1e571977e3144b4a7aa28d51dee40931260b7c0de8121601ee4d621300248d8bca7eea6c653cac06c9726b55e0b4aa1b1ba1289e1f23588556
6
+ metadata.gz: 8efca6c55b739abb1adb3f90b4e8374b86b522f66a2d78112fd2c523dd010b1de2580fd6108007627944cd5bf03839e83d5bd2a6bb20b2facee71c0c23b05727
7
+ data.tar.gz: d0c2f0e0bc7799caf47485fbab287d0d1a818e9e0370b179e399b502cf3ab6301543a87a1d836c11e4a725f453b910a2c78dfcee26e0e32c8a8c32cced866ed2
@@ -1,5 +1,6 @@
1
- # This configuration was generated by `rubocop --auto-gen-config`
2
- # on 2014-11-26 10:49:30 -0500 using RuboCop version 0.27.1.
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2015-10-19 17:38:30 -0400 using RuboCop version 0.34.2.
3
4
  # The point is for the user to remove these configuration records
4
5
  # one by one as the offenses are removed from the code base.
5
6
  # Note that changes in the inspected code, or installation of new
@@ -13,7 +14,7 @@ Metrics/AbcSize:
13
14
  Metrics/CyclomaticComplexity:
14
15
  Max: 11
15
16
 
16
- # Offense count: 56
17
+ # Offense count: 73
17
18
  # Configuration parameters: AllowURI, URISchemes.
18
19
  Metrics/LineLength:
19
20
  Max: 140
@@ -27,23 +28,46 @@ Metrics/MethodLength:
27
28
  Metrics/PerceivedComplexity:
28
29
  Max: 12
29
30
 
30
- # Offense count: 38
31
+ # Offense count: 24
32
+ # Configuration parameters: Exclude.
31
33
  Style/Documentation:
32
34
  Enabled: false
33
35
 
34
36
  # Offense count: 3
35
37
  Style/DoubleNegation:
36
- Enabled: false
38
+ Exclude:
39
+ - 'lib/garner/strategies/binding/invalidation/touch.rb'
40
+ - 'spec/garner/version_spec.rb'
41
+ - 'spec/support/cache.rb'
42
+
43
+ # Offense count: 2
44
+ # Cop supports --auto-correct.
45
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
46
+ Style/EmptyElse:
47
+ Exclude:
48
+ - 'lib/garner/cache.rb'
49
+ - 'lib/garner/strategies/binding/key/binding_index.rb'
37
50
 
38
51
  # Offense count: 1
39
52
  Style/ModuleFunction:
40
- Enabled: false
53
+ Exclude:
54
+ - 'lib/garner/config.rb'
41
55
 
42
56
  # Offense count: 1
43
57
  # Configuration parameters: SupportedStyles.
44
58
  Style/RaiseArgs:
45
59
  EnforcedStyle: compact
46
60
 
61
+ # Offense count: 2
62
+ # Cop supports --auto-correct.
63
+ # Configuration parameters: EnforcedStyle, SupportedStyles, AllowInnerSlashes.
64
+ Style/RegexpLiteral:
65
+ Exclude:
66
+ - 'garner.gemspec'
67
+ - 'spec/garner/strategies/binding/key/safe_cache_key_spec.rb'
68
+
47
69
  # Offense count: 1
70
+ # Cop supports --auto-correct.
48
71
  Style/RescueModifier:
49
- Enabled: false
72
+ Exclude:
73
+ - 'lib/garner/strategies/context/key/caller.rb'
@@ -6,10 +6,12 @@ services:
6
6
 
7
7
  rvm:
8
8
  - 1.9.3
9
- - 2.1.2
9
+ - 2.1
10
+ - 2.2
10
11
  - rbx-2
11
12
  - jruby-19mode
12
13
 
13
14
  env:
14
15
  - MONGOID_VERSION=3
15
16
  - MONGOID_VERSION=4
17
+ - MONGOID_VERSION=5
@@ -1,3 +1,8 @@
1
+ 0.5.2 (10/19/2015)
2
+ ------------------
3
+
4
+ * [#89](https://github.com/artsy/garner/pull/89): Added support for Mongoid 5 - [@dblock](https://github.com/dblock).
5
+
1
6
  0.5.1 (11/26/2014)
2
7
  ------------------
3
8
 
data/README.md CHANGED
@@ -1,6 +1,12 @@
1
- Garner [![Build Status](https://secure.travis-ci.org/artsy/garner.png)](http://travis-ci.org/artsy/garner) [![Dependency Status](https://gemnasium.com/artsy/garner.png)](https://gemnasium.com/artsy/garner) [![Coverage Status](https://coveralls.io/repos/artsy/garner/badge.png)](https://coveralls.io/r/artsy/garner) [![Code Climate](https://codeclimate.com/github/artsy/garner.png)](https://codeclimate.com/github/artsy/garner)
1
+ Garner
2
2
  ======
3
3
 
4
+ [![Gem Version](https://badge.fury.io/rb/garner.svg)](https://badge.fury.io/rb/garner)
5
+ [![Build Status](https://travis-ci.org/artsy/garner.svg?branch=master)](https://travis-ci.org/artsy/garner)
6
+ [![Dependency Status](https://gemnasium.com/artsy/garner.svg)](https://gemnasium.com/artsy/garner)
7
+ [![Code Climate](https://codeclimate.com/github/artsy/garner.svg)](https://codeclimate.com/github/artsy/garner)
8
+ [![Coverage Status](https://coveralls.io/repos/artsy/garner/badge.svg?branch=master&service=github)](https://coveralls.io/github/artsy/garner?branch=master)
9
+
4
10
  Garner is a cache layer for Ruby and Rack applications, supporting model and instance binding and hierarchical invalidation. To "garner" means to gather data from various sources and to make it readily available in one place, kind of like a cache!
5
11
 
6
12
  If you're not familiar with HTTP caching, ETags and If-Modified-Since, watch us introduce Garner in [From Zero to API Cache in 10 Minutes](http://www.confreaks.com/videos/986-goruco2012-from-zero-to-api-cache-w-grape-mongodb-in-10-minutes) at GoRuCo 2012.
@@ -51,7 +57,7 @@ ORM Integrations
51
57
 
52
58
  ### Mongoid
53
59
 
54
- To use Mongoid documents and classes for Garner bindings, use `Garner::Mixins::Mongoid::Document`. You can set it up in an initializer:
60
+ To use Mongoid 3, 4 or 5 documents and classes for Garner bindings, use `Garner::Mixins::Mongoid::Document`. You can set it up in an initializer:
55
61
 
56
62
  ``` ruby
57
63
  require "garner/mixins/mongoid"
data/Rakefile CHANGED
@@ -27,10 +27,10 @@ YARD::Rake::YardocTask.new(:doc)
27
27
  task :benchmark do
28
28
  require 'performance/strategy_benchmark'
29
29
  StrategyBenchmark.new(
30
- n: ENV['N'].try(&:to_i),
31
- d: ENV['D'].try(&:to_i),
32
- r: ENV['R'].try(&:to_i)
33
- ).run!
30
+ n: ENV['N'].try(&:to_i),
31
+ d: ENV['D'].try(&:to_i),
32
+ r: ENV['R'].try(&:to_i)
33
+ ).run!
34
34
  end
35
35
 
36
36
  require 'rubocop/rake_task'
@@ -29,7 +29,7 @@ Gem::Specification.new do |s|
29
29
  s.add_development_dependency 'sinatra'
30
30
  s.add_development_dependency 'rack-test'
31
31
  s.add_development_dependency 'mongoid', '>= 3.0.0'
32
- s.add_development_dependency 'mongoid_slug'
32
+ s.add_development_dependency 'mongoid-slug'
33
33
  s.add_development_dependency 'activerecord'
34
34
  if RUBY_PLATFORM =~ /java/
35
35
  s.add_development_dependency 'jdbc-sqlite3'
@@ -40,5 +40,5 @@ Gem::Specification.new do |s|
40
40
  s.add_development_dependency 'coveralls'
41
41
  s.add_development_dependency 'yard'
42
42
  s.add_development_dependency 'dalli'
43
- s.add_development_dependency 'rubocop', '0.27.1'
43
+ s.add_development_dependency 'rubocop', '0.34.2'
44
44
  end
@@ -1,7 +1,7 @@
1
1
  # Set up Garner configuration parameters
2
2
  Garner.config.option(:context_key_strategies,
3
3
  default: [Garner::Strategies::Context::Key::Caller]
4
- )
4
+ )
5
5
  Garner.config.option(:rack_context_key_strategies,
6
6
  default: [
7
7
  Garner::Strategies::Context::Key::Caller,
@@ -9,7 +9,7 @@ Garner.config.option(:rack_context_key_strategies,
9
9
  Garner::Strategies::Context::Key::RequestPost,
10
10
  Garner::Strategies::Context::Key::RequestPath
11
11
  ]
12
- )
12
+ )
13
13
 
14
14
  module Garner
15
15
  module Cache
@@ -79,7 +79,6 @@ module Garner
79
79
  invalidation_strategy.apply(self)
80
80
  invalidation_strategy.apply(_root) if _root != self && Garner.config.invalidate_mongoid_root
81
81
  end
82
-
83
82
  end
84
83
  end
85
84
  end
@@ -3,7 +3,7 @@ module Garner
3
3
  module Binding
4
4
  module Key
5
5
  class BindingIndex < Base
6
- RANDOM_KEY_LENGTH = 12 # In bytes.
6
+ RANDOM_KEY_LENGTH = 12 # In bytes.
7
7
 
8
8
  # Compute a cache key as follows:
9
9
  # 1. Determine whether the binding is canonical.
@@ -1,3 +1,3 @@
1
1
  module Garner
2
- VERSION = '0.5.1'
2
+ VERSION = '0.5.2'
3
3
  end
@@ -1,9 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Garner::Cache::Context do
4
-
5
4
  describe 'garner' do
6
-
7
5
  before(:each) do
8
6
  class TestContext
9
7
  include Garner::Cache::Context
@@ -33,6 +31,5 @@ describe Garner::Cache::Context do
33
31
  end
34
32
  expect(subject.call.key_hash[:caller]).to be_nil
35
33
  end
36
-
37
34
  end
38
35
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Garner::Cache::Identity do
4
-
5
4
  it 'includes Garner.config.global_cache_options' do
6
5
  Garner.configure { |config| config.global_cache_options = { foo: 'bar' } }
7
6
  expect(subject.options_hash[:foo]).to eq 'bar'
@@ -48,7 +48,7 @@ describe Garner::Cache do
48
48
 
49
49
  it 'deletes record when cached block yields nil' do
50
50
  binding = double('object', garner_cache_key: 'key')
51
- expect(Garner.config.cache).to receive(:delete).with({ binding_keys: ['key'], context_keys: { key: 'value' } }, { namespace: 'foo' })
51
+ expect(Garner.config.cache).to receive(:delete).with({ binding_keys: ['key'], context_keys: { key: 'value' } }, namespace: 'foo')
52
52
  subject.fetch [binding], { key: 'value' }, namespace: 'foo' do
53
53
  nil
54
54
  end
@@ -82,6 +82,7 @@ describe Garner::Mixins::Mongoid::Identity do
82
82
  end
83
83
 
84
84
  @monger = Monger.create(name: 'M1')
85
+ @monger.reload
85
86
  @cheese = Cheese.create(name: 'Havarti')
86
87
  @cheese.reload
87
88
  end
@@ -2,9 +2,7 @@ require 'spec_helper'
2
2
  require 'garner/mixins/rack'
3
3
 
4
4
  describe Garner::Mixins::Rack do
5
-
6
5
  describe 'garner' do
7
-
8
6
  before(:each) do
9
7
  class MockApp
10
8
  include Garner::Mixins::Rack
@@ -43,6 +41,5 @@ describe Garner::Mixins::Rack do
43
41
  expect(subject.call.key_hash[:caller]).to be_nil
44
42
  expect(subject.call.key_hash[:request_params]).to eq('foo' => 'bar')
45
43
  end
46
-
47
44
  end
48
45
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Garner::Strategies::Binding::Invalidation::BindingIndex do
4
-
5
4
  before(:each) do
6
5
  @mock = double('model')
7
6
  allow(@mock).to receive(:touch)
@@ -10,5 +9,4 @@ describe Garner::Strategies::Binding::Invalidation::BindingIndex do
10
9
  subject { Garner::Strategies::Binding::Invalidation::BindingIndex }
11
10
 
12
11
  it_behaves_like 'Garner::Strategies::Binding::Invalidation strategy'
13
-
14
12
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Garner::Strategies::Binding::Invalidation::Touch do
4
-
5
4
  before(:each) do
6
5
  @mock = double('model')
7
6
  allow(@mock).to receive(:touch)
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Garner::Strategies::Binding::Key::BindingIndex do
4
-
5
4
  before(:each) do
6
5
  @new_mock = double('new_mock')
7
6
 
@@ -68,9 +67,9 @@ describe Garner::Strategies::Binding::Key::BindingIndex do
68
67
  it 'stores the cache key to cache' do
69
68
  subject.fetch_cache_key_for(@persisted_mock)
70
69
  expect(Garner.config.cache.read(
71
- strategy: subject,
72
- proxied_binding: 'Mocker/id=4'
73
- )).to eq @mock_key
70
+ strategy: subject,
71
+ proxied_binding: 'Mocker/id=4'
72
+ )).to eq @mock_key
74
73
  end
75
74
  end
76
75
 
@@ -82,17 +81,17 @@ describe Garner::Strategies::Binding::Key::BindingIndex do
82
81
  it 'stores the canonical binding to cache' do
83
82
  subject.fetch_cache_key_for(@persisted_mock_alias)
84
83
  expect(Garner.config.cache.read(
85
- strategy: subject,
86
- proxied_binding: 'MockerAlias/id=alias-4'
87
- )).to eq @persisted_mock
84
+ strategy: subject,
85
+ proxied_binding: 'MockerAlias/id=alias-4'
86
+ )).to eq @persisted_mock
88
87
  end
89
88
 
90
89
  it 'stores the cache key to cache' do
91
90
  subject.fetch_cache_key_for(@persisted_mock_alias)
92
91
  expect(Garner.config.cache.read(
93
- strategy: subject,
94
- proxied_binding: 'Mocker/id=4'
95
- )).to eq @mock_key
92
+ strategy: subject,
93
+ proxied_binding: 'Mocker/id=4'
94
+ )).to eq @mock_key
96
95
  end
97
96
 
98
97
  context 'whose canonical binding is nil' do
@@ -107,9 +106,9 @@ describe Garner::Strategies::Binding::Key::BindingIndex do
107
106
  it 'does not store the cache key to cache' do
108
107
  subject.fetch_cache_key_for(@persisted_mock_alias)
109
108
  expect(Garner.config.cache.read(
110
- strategy: subject,
111
- proxied_binding: ''
112
- )).to be_nil
109
+ strategy: subject,
110
+ proxied_binding: ''
111
+ )).to be_nil
113
112
  end
114
113
  end
115
114
  end
@@ -154,9 +153,9 @@ describe Garner::Strategies::Binding::Key::BindingIndex do
154
153
  it 'stores the canonical binding to cache' do
155
154
  subject.fetch_canonical_binding_for(@persisted_mock_alias)
156
155
  expect(Garner.config.cache.read(
157
- strategy: subject,
158
- proxied_binding: 'MockerAlias/id=alias-4'
159
- )).to eq @persisted_mock
156
+ strategy: subject,
157
+ proxied_binding: 'MockerAlias/id=alias-4'
158
+ )).to eq @persisted_mock
160
159
  end
161
160
  end
162
161
 
@@ -221,24 +220,24 @@ describe Garner::Strategies::Binding::Key::BindingIndex do
221
220
  expect(key1).to eq key2
222
221
 
223
222
  expect(Garner.config.cache.read(
224
- strategy: subject,
225
- proxied_binding: "Garner::Mixins::Mongoid::Identity/klass=Food,handle=#{@cheese.id}"
226
- )).to eq @cheese
223
+ strategy: subject,
224
+ proxied_binding: "Garner::Mixins::Mongoid::Identity/klass=Food,handle=#{@cheese.id}"
225
+ )).to eq @cheese
227
226
 
228
227
  expect(Garner.config.cache.read(
229
- strategy: subject,
230
- proxied_binding: 'Garner::Mixins::Mongoid::Identity/klass=Cheese,handle=m1'
231
- )).to eq @cheese
228
+ strategy: subject,
229
+ proxied_binding: 'Garner::Mixins::Mongoid::Identity/klass=Cheese,handle=m1'
230
+ )).to eq @cheese
232
231
 
233
232
  expect(Garner.config.cache.read(
234
- strategy: subject,
235
- proxied_binding: "Cheese/id=#{@cheese.id}"
236
- )).to eq key1
233
+ strategy: subject,
234
+ proxied_binding: "Cheese/id=#{@cheese.id}"
235
+ )).to eq key1
237
236
 
238
237
  expect(Garner.config.cache.read(
239
- strategy: subject,
240
- proxied_binding: "Food/id=#{@cheese.id}"
241
- )).to be_nil
238
+ strategy: subject,
239
+ proxied_binding: "Food/id=#{@cheese.id}"
240
+ )).to be_nil
242
241
  end
243
242
  end
244
243
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Garner::Strategies::Binding::Key::CacheKey do
4
-
5
4
  before(:each) do
6
5
  @mock = double('model')
7
6
  allow(@mock).to receive(:cache_key) { 'mocks/4' }
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Garner::Strategies::Binding::Key::SafeCacheKey do
4
-
5
4
  before(:each) do
6
5
  @new_mock = double('model')
7
6
  allow(@new_mock).to receive(:cache_key) { 'mocks/4' }
@@ -3,7 +3,6 @@ require 'spec_helper'
3
3
  describe Garner::Strategies::Context::Key::RequestGet do
4
4
  %w(GET HEAD).each do |method|
5
5
  context method do
6
-
7
6
  before(:each) do
8
7
  @cache_identity = Garner::Cache::Identity.new
9
8
  @request = Rack::Request.new('REQUEST_METHOD' => method, 'QUERY_STRING' => 'foo=bar')
@@ -2,7 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  describe 'ActiveRecord integration', type: :request do
4
4
  context 'using the Garner::Strategies::Binding::Key::CacheKey strategy' do
5
-
6
5
  describe 'cache key generation' do
7
6
  subject { Garner::Strategies::Binding::Key::CacheKey }
8
7
 
@@ -125,7 +125,6 @@ describe 'Mongoid integration', type: :request do
125
125
  expect(Monger).to receive(:find).once
126
126
  2.times { Monger.garnered_find(%w(m1 m2)) }
127
127
  end
128
-
129
128
  end
130
129
  end
131
130
 
@@ -1,9 +1,10 @@
1
+ # encoding: utf-8
2
+
1
3
  require 'spec_helper'
2
4
  require 'garner/mixins/rack'
3
5
  require 'sinatra'
4
6
 
5
7
  describe 'Sinatra integration', type: :request do
6
-
7
8
  let(:app) do
8
9
  class TestSinatraApp < Sinatra::Base
9
10
  helpers Garner::Mixins::Rack
@@ -25,5 +26,4 @@ describe 'Sinatra integration', type: :request do
25
26
  end
26
27
 
27
28
  it_behaves_like 'Rack::ConditionalGet server'
28
-
29
29
  end
@@ -53,7 +53,8 @@ class BenchmarkContextWrapper
53
53
  private
54
54
 
55
55
  def warm_caches
56
- klass, handle = binding.class, binding.slug
56
+ klass = binding.class
57
+ handle = binding.slug
57
58
  json = binding.reload.to_json
58
59
  garner.bind(klass.identify(handle)).key(caller: nil) { json }
59
60
  garner.bind(klass).key(caller: nil) { json }
@@ -14,28 +14,28 @@ shared_examples_for 'Rack::ConditionalGet server' do
14
14
 
15
15
  it "writes the cached object's ETag from binding" do
16
16
  get '/'
17
- expect(last_response.headers['ETag'].length).to eq 32 + 2
17
+ expect(last_response.headers['ETag'].length).to eq 32 + 2 + 2
18
18
  end
19
19
 
20
20
  it 'sends a 304 response if content has not changed (If-None-Match)' do
21
21
  get '/'
22
22
  expect(last_response.status).to eq 200
23
- expect(last_response.headers['ETag']).to eq %("#{etag_for(last_response.body)}")
24
- get '/', {}, 'HTTP_IF_NONE_MATCH' => last_response.headers['ETag']
23
+ expect(last_response.headers['ETag']).to eq "W/\"#{etag_for(last_response.body)}\""
24
+ get '/', {}, 'HTTP_IF_NONE_MATCH' => last_response.headers['ETag']
25
25
  expect(last_response.status).to eq 304
26
26
  end
27
27
 
28
28
  it 'sends a 200 response if content has changed (If-None-Match)' do
29
29
  get '/'
30
30
  expect(last_response.status).to eq 200
31
- get '/', {}, 'HTTP_IF_NONE_MATCH' => %("#{etag_for('foobar')}")
31
+ get '/', {}, 'HTTP_IF_NONE_MATCH' => %("#{etag_for('foobar')}")
32
32
  expect(last_response.status).to eq 200
33
33
  end
34
34
 
35
35
  it 'sends a 200 response if content has changed (valid If-Modified-Since but invalid If-None-Match)' do
36
36
  get '/'
37
37
  expect(last_response.status).to eq 200
38
- get '/', {}, 'HTTP_IF_MODIFIED_SINCE' => (Time.now + 1).httpdate, 'HTTP_IF_NONE_MATCH' => %("#{etag_for(last_response.body)}")
38
+ get '/', {}, 'HTTP_IF_MODIFIED_SINCE' => (Time.now + 1).httpdate, 'HTTP_IF_NONE_MATCH' => etag_for(last_response.body)
39
39
  expect(last_response.status).to eq 200
40
40
  end
41
41
 
@@ -1,24 +1,14 @@
1
1
  require 'garner/mixins/mongoid'
2
2
  require 'mongoid_slug'
3
3
 
4
- # Use garner_test database for integration tests
5
- Mongoid.load_configuration(
6
- sessions: {
7
- default: {
8
- uri: ENV['GARNER_MONGO_URL'] || 'mongodb://localhost/garner_test',
9
- safe: true
10
- }
11
- },
12
- options: {
13
- raise_not_found_error: false
14
- }
15
- )
16
-
17
- if ENV['GARNER_MONGOID_LOG']
18
- Mongoid.logger = Logger.new(ENV['GARNER_MONGOID_LOG'])
19
- Moped.logger = Mongoid.logger
4
+ Mongoid.configure do |config|
5
+ config.connect_to 'garner_test'
6
+ config.raise_not_found_error = false
20
7
  end
21
8
 
9
+ Mongoid.logger.level = Logger::INFO
10
+ Mongo::Logger.logger.level = Logger::INFO if Mongoid::Compatibility::Version.mongoid5?
11
+
22
12
  # Include mixin
23
13
  module Mongoid
24
14
  module Document
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: garner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Doubrovkine
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-11-26 00:00:00.000000000 Z
12
+ date: 2015-10-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
@@ -166,7 +166,7 @@ dependencies:
166
166
  - !ruby/object:Gem::Version
167
167
  version: 3.0.0
168
168
  - !ruby/object:Gem::Dependency
169
- name: mongoid_slug
169
+ name: mongoid-slug
170
170
  requirement: !ruby/object:Gem::Requirement
171
171
  requirements:
172
172
  - - '>='
@@ -255,14 +255,14 @@ dependencies:
255
255
  requirements:
256
256
  - - '='
257
257
  - !ruby/object:Gem::Version
258
- version: 0.27.1
258
+ version: 0.34.2
259
259
  type: :development
260
260
  prerelease: false
261
261
  version_requirements: !ruby/object:Gem::Requirement
262
262
  requirements:
263
263
  - - '='
264
264
  - !ruby/object:Gem::Version
265
- version: 0.27.1
265
+ version: 0.34.2
266
266
  description:
267
267
  email:
268
268
  - dblock@dblock.org
@@ -371,7 +371,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
371
371
  version: '0'
372
372
  requirements: []
373
373
  rubyforge_project:
374
- rubygems_version: 2.1.11
374
+ rubygems_version: 2.4.5
375
375
  signing_key:
376
376
  specification_version: 4
377
377
  summary: Garner is a cache layer for Ruby and Rack applications, supporting model