rails-cache-tags 1.1.1 → 1.2.0
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.
- data/LICENSE +1 -1
- data/README.md +36 -2
- data/lib/rails-cache-tags.rb +16 -0
- data/lib/rails/cache/tags/store.rb +35 -12
- data/lib/rails/cache/tags/version.rb +1 -1
- data/rails-cache-tags.gemspec +2 -1
- data/test/cache_tags_test.rb +4 -1
- data/test/caching_test.rb +27 -146
- data/test/test_helper.rb +2 -0
- metadata +29 -27
- data/.gitignore +0 -19
- data/Appraisals +0 -11
- data/Gemfile +0 -4
- data/Rakefile +0 -11
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Synopsys
|
2
2
|
|
3
3
|
Tagged caching support within your Rails application. Tested against Rails 3.0, Rails 3.1 and Rails 3.2
|
4
|
+
[Dalli](https://github.com/mperham/dalli) store is also supported!
|
4
5
|
|
5
6
|
# Installation
|
6
7
|
|
@@ -30,6 +31,39 @@ cache.delete_tag "baz"
|
|
30
31
|
cache.read "foo" => nil
|
31
32
|
```
|
32
33
|
|
34
|
+
More realistic example:
|
35
|
+
```ruby
|
36
|
+
class PostsController < ApplicationController
|
37
|
+
def index
|
38
|
+
@posts = cache.fetch("index", :tags =>
|
39
|
+
|
40
|
+
@posts = cache.read("posts") || begin
|
41
|
+
posts_from_db = Post.all
|
42
|
+
|
43
|
+
cache.write "posts", :tags => {:post => posts_from_db.map(&:id)}
|
44
|
+
|
45
|
+
posts_from_db
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def show
|
50
|
+
id = params[:id]
|
51
|
+
|
52
|
+
@post = cache.fetch(["post", id], :tags => {:post => id}) do
|
53
|
+
Post.find(id)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def update
|
58
|
+
@post = Post.find(params[:id])
|
59
|
+
|
60
|
+
if @post.update_attributes
|
61
|
+
cache.delete_tag :post => @post.id
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
```
|
66
|
+
|
33
67
|
In your controller:
|
34
68
|
```ruby
|
35
69
|
class PostController < ActionController::Base
|
@@ -51,6 +85,6 @@ end
|
|
51
85
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
52
86
|
3. Commit your changes (`git commit -am 'Added some feature'`)
|
53
87
|
4. Write tests!
|
54
|
-
5. Run tests against all
|
88
|
+
5. Run tests against all major version of Rails starting from 3.0
|
55
89
|
6. Push to the branch (`git push origin my-new-feature`)
|
56
|
-
7. Create new Pull Request
|
90
|
+
7. Create new Pull Request
|
data/lib/rails-cache-tags.rb
CHANGED
@@ -5,6 +5,7 @@ require "action_controller"
|
|
5
5
|
require "rails/cache/tag"
|
6
6
|
require "rails/cache/tags/store"
|
7
7
|
|
8
|
+
# Patch ActiveSupport common store
|
8
9
|
module ActiveSupport
|
9
10
|
module Cache
|
10
11
|
class Store
|
@@ -17,6 +18,7 @@ module ActiveSupport
|
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
21
|
+
# Patch ActionDispatch
|
20
22
|
class ActionController::Base < ActionController::Metal
|
21
23
|
def expire_fragments_by_tags *args
|
22
24
|
return unless cache_configured?
|
@@ -24,4 +26,18 @@ class ActionController::Base < ActionController::Metal
|
|
24
26
|
cache_store.delete_tag *args
|
25
27
|
end
|
26
28
|
alias expire_fragments_by_tag expire_fragments_by_tags
|
29
|
+
end
|
30
|
+
|
31
|
+
# Patch Dalli store
|
32
|
+
begin
|
33
|
+
require "dalli"
|
34
|
+
require "dalli/version"
|
35
|
+
|
36
|
+
if Dalli::VERSION.to_f > 2
|
37
|
+
require "active_support/cache/dalli_store"
|
38
|
+
|
39
|
+
ActiveSupport::Cache::DalliStore.extend(Rails::Cache::Tags::Store)
|
40
|
+
end
|
41
|
+
rescue LoadError, NameError
|
42
|
+
# ignore
|
27
43
|
end
|
@@ -4,6 +4,9 @@ module Rails
|
|
4
4
|
module Cache
|
5
5
|
module Tags
|
6
6
|
module Store
|
7
|
+
# cache entry (for Dalli mainly)
|
8
|
+
Entry = Struct.new(:value, :tags)
|
9
|
+
|
7
10
|
# patched +new+ method
|
8
11
|
def new(*args, &block) #:nodoc:
|
9
12
|
unless acts_like?(:cached_tags)
|
@@ -37,8 +40,13 @@ module Rails
|
|
37
40
|
def read_entry_with_tags(key, options) #:nodoc
|
38
41
|
entry = read_entry_without_tags(key, options)
|
39
42
|
|
40
|
-
|
41
|
-
|
43
|
+
# tags are supported only for ActiveSupport::Cache::Entry or Rails::Cache::Tags::Entry
|
44
|
+
tags = if entry.is_a?(ActiveSupport::Cache::Entry) || entry.is_a?(Entry)
|
45
|
+
entry.tags
|
46
|
+
end
|
47
|
+
|
48
|
+
if tags.is_a?(Hash) && tags.present?
|
49
|
+
current_versions = fetch_tags(entry.tags.keys).values
|
42
50
|
saved_versions = entry.tags.values
|
43
51
|
|
44
52
|
if current_versions != saved_versions
|
@@ -48,15 +56,27 @@ module Rails
|
|
48
56
|
end
|
49
57
|
end
|
50
58
|
|
51
|
-
entry
|
59
|
+
entry.is_a?(Entry) ?
|
60
|
+
entry.value :
|
61
|
+
entry
|
52
62
|
end # def read_entry_with_tags
|
53
63
|
|
54
64
|
def write_entry_with_tags(key, entry, options) #:nodoc:
|
55
65
|
tags = Rails::Cache::Tag.build_tags Array.wrap(options[:tags]).flatten.compact
|
56
66
|
|
57
67
|
if entry && tags.present?
|
58
|
-
|
59
|
-
|
68
|
+
options[:raw] = false # force :raw => false
|
69
|
+
|
70
|
+
# Dalli treats ActiveSupport::Cache::Entry as deprecated behavior, so we use our own Entry class
|
71
|
+
entry = Entry.new(entry, nil) unless entry.is_a?(ActiveSupport::Cache::Entry)
|
72
|
+
|
73
|
+
entry.tags = fetch_tags(tags).reduce(HashWithIndifferentAccess.new) do |hash, v|
|
74
|
+
tag, value = v
|
75
|
+
|
76
|
+
hash[tag.name] = value || tag.increment(self)
|
77
|
+
|
78
|
+
hash
|
79
|
+
end
|
60
80
|
end
|
61
81
|
|
62
82
|
write_entry_without_tags(key, entry, options)
|
@@ -64,16 +84,19 @@ module Rails
|
|
64
84
|
|
65
85
|
private
|
66
86
|
# fetch tags versions from store
|
67
|
-
# fetch ['user
|
87
|
+
# fetch ['user/1', 'post/2', 'country/2'] => [Tag('user/1') => 3, Tag('post/2') => 4, Tag('country/2') => nil]
|
68
88
|
def fetch_tags(names) #:nodoc:
|
69
89
|
tags = Rails::Cache::Tag.build_tags names
|
70
|
-
|
71
|
-
stored = read_multi(*keys)
|
90
|
+
stored = read_multi(*tags.map(&:to_key))
|
72
91
|
|
73
|
-
#
|
74
|
-
|
75
|
-
|
76
|
-
|
92
|
+
# build hash
|
93
|
+
tags.reduce(Hash.new) do |hash, t|
|
94
|
+
hash[t] = stored[t.to_key]
|
95
|
+
|
96
|
+
hash
|
97
|
+
end
|
98
|
+
end # def fetch_tags
|
99
|
+
end # module InstanceMethods
|
77
100
|
end # module Store
|
78
101
|
end # module Tags
|
79
102
|
end # module Cache
|
data/rails-cache-tags.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |gem|
|
|
8
8
|
gem.summary = %q{Tagged caching support for Rails}
|
9
9
|
gem.homepage = "https://github.com/take-five/rails-cache-tags"
|
10
10
|
|
11
|
-
gem.files =
|
11
|
+
gem.files = %W(LICENSE README.md lib/rails-cache-tags.rb lib/rails/cache/tag.rb rails-cache-tags.gemspec lib/rails/cache/tags/store.rb lib/rails/cache/tags/version.rb test/cache_tags_test.rb test/caching_test.rb test/test_helper.rb)
|
12
12
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
13
13
|
gem.name = "rails-cache-tags"
|
14
14
|
gem.require_paths = %W(lib)
|
@@ -22,4 +22,5 @@ Gem::Specification.new do |gem|
|
|
22
22
|
gem.add_development_dependency 'rack'
|
23
23
|
gem.add_development_dependency 'mocha'
|
24
24
|
gem.add_development_dependency 'simplecov'
|
25
|
+
gem.add_development_dependency 'dalli', '>= 2.0'
|
25
26
|
end
|
data/test/cache_tags_test.rb
CHANGED
@@ -73,6 +73,9 @@ module CacheTagsBehavior
|
|
73
73
|
@cache.write("foo", "bar", :tags => {:baz => 1})
|
74
74
|
assert_equal 'bar', @cache.read('foo')
|
75
75
|
|
76
|
+
@cache.delete_tag :baz => 2
|
77
|
+
assert_equal 'bar', @cache.read('foo')
|
78
|
+
|
76
79
|
@cache.delete_tag :baz => 1
|
77
80
|
|
78
81
|
assert_nil @cache.read('foo')
|
@@ -91,6 +94,6 @@ module CacheTagsBehavior
|
|
91
94
|
end
|
92
95
|
end
|
93
96
|
|
94
|
-
[FileStoreTest, MemoryStoreTest, MemCacheStoreTest].each do |klass|
|
97
|
+
[FileStoreTest, MemoryStoreTest, MemCacheStoreTest, DalliStoreTest].each do |klass|
|
95
98
|
klass.send :include, CacheTagsBehavior
|
96
99
|
end
|
data/test/caching_test.rb
CHANGED
@@ -3,138 +3,6 @@ $:.unshift(File.dirname(__FILE__))
|
|
3
3
|
require 'test_helper'
|
4
4
|
require 'logger'
|
5
5
|
|
6
|
-
class CacheKeyTest < ActiveSupport::TestCase
|
7
|
-
def test_expand_cache_key
|
8
|
-
assert_equal '1/2/true', ActiveSupport::Cache.expand_cache_key([1, '2', true])
|
9
|
-
assert_equal 'name/1/2/true', ActiveSupport::Cache.expand_cache_key([1, '2', true], :name)
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_expand_cache_key_with_rails_cache_id
|
13
|
-
begin
|
14
|
-
ENV['RAILS_CACHE_ID'] = 'c99'
|
15
|
-
assert_equal 'c99/foo', ActiveSupport::Cache.expand_cache_key(:foo)
|
16
|
-
assert_equal 'c99/foo', ActiveSupport::Cache.expand_cache_key([:foo])
|
17
|
-
assert_equal 'nm/c99/foo', ActiveSupport::Cache.expand_cache_key(:foo, :nm)
|
18
|
-
assert_equal 'nm/c99/foo', ActiveSupport::Cache.expand_cache_key([:foo], :nm)
|
19
|
-
ensure
|
20
|
-
ENV['RAILS_CACHE_ID'] = nil
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_expand_cache_key_with_rails_app_version
|
25
|
-
begin
|
26
|
-
ENV['RAILS_APP_VERSION'] = 'rails3'
|
27
|
-
assert_equal 'rails3/foo', ActiveSupport::Cache.expand_cache_key(:foo)
|
28
|
-
ensure
|
29
|
-
ENV['RAILS_APP_VERSION'] = nil
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_expand_cache_key_rails_cache_id_should_win_over_rails_app_version
|
34
|
-
begin
|
35
|
-
ENV['RAILS_CACHE_ID'] = 'c99'
|
36
|
-
ENV['RAILS_APP_VERSION'] = 'rails3'
|
37
|
-
assert_equal 'c99/foo', ActiveSupport::Cache.expand_cache_key(:foo)
|
38
|
-
ensure
|
39
|
-
ENV['RAILS_CACHE_ID'] = nil
|
40
|
-
ENV['RAILS_APP_VERSION'] = nil
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_respond_to_cache_key
|
45
|
-
key = 'foo'
|
46
|
-
def key.cache_key
|
47
|
-
:foo_key
|
48
|
-
end
|
49
|
-
assert_equal 'foo_key', ActiveSupport::Cache.expand_cache_key(key)
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
53
|
-
|
54
|
-
class CacheStoreSettingTest < ActiveSupport::TestCase
|
55
|
-
def test_file_fragment_cache_store
|
56
|
-
store = ActiveSupport::Cache.lookup_store :file_store, "/path/to/cache/directory"
|
57
|
-
assert_kind_of(ActiveSupport::Cache::FileStore, store)
|
58
|
-
assert_equal "/path/to/cache/directory", store.cache_path
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_mem_cache_fragment_cache_store
|
62
|
-
MemCache.expects(:new).with(%w[localhost], {})
|
63
|
-
store = ActiveSupport::Cache.lookup_store :mem_cache_store, "localhost"
|
64
|
-
assert_kind_of(ActiveSupport::Cache::MemCacheStore, store)
|
65
|
-
end
|
66
|
-
|
67
|
-
def test_mem_cache_fragment_cache_store_with_given_mem_cache
|
68
|
-
mem_cache = MemCache.new
|
69
|
-
MemCache.expects(:new).never
|
70
|
-
store = ActiveSupport::Cache.lookup_store :mem_cache_store, mem_cache
|
71
|
-
assert_kind_of(ActiveSupport::Cache::MemCacheStore, store)
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_mem_cache_fragment_cache_store_with_given_mem_cache_like_object
|
75
|
-
MemCache.expects(:new).never
|
76
|
-
memcache = Object.new
|
77
|
-
def memcache.get() true end
|
78
|
-
store = ActiveSupport::Cache.lookup_store :mem_cache_store, memcache
|
79
|
-
assert_kind_of(ActiveSupport::Cache::MemCacheStore, store)
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_mem_cache_fragment_cache_store_with_multiple_servers
|
83
|
-
MemCache.expects(:new).with(%w[localhost 192.168.1.1], {})
|
84
|
-
store = ActiveSupport::Cache.lookup_store :mem_cache_store, "localhost", '192.168.1.1'
|
85
|
-
assert_kind_of(ActiveSupport::Cache::MemCacheStore, store)
|
86
|
-
end
|
87
|
-
|
88
|
-
def test_mem_cache_fragment_cache_store_with_options
|
89
|
-
MemCache.expects(:new).with(%w[localhost 192.168.1.1], { :timeout => 10 })
|
90
|
-
store = ActiveSupport::Cache.lookup_store :mem_cache_store, "localhost", '192.168.1.1', :namespace => 'foo', :timeout => 10
|
91
|
-
assert_kind_of(ActiveSupport::Cache::MemCacheStore, store)
|
92
|
-
assert_equal 'foo', store.options[:namespace]
|
93
|
-
end
|
94
|
-
|
95
|
-
def test_object_assigned_fragment_cache_store
|
96
|
-
store = ActiveSupport::Cache.lookup_store ActiveSupport::Cache::FileStore.new("/path/to/cache/directory")
|
97
|
-
assert_kind_of(ActiveSupport::Cache::FileStore, store)
|
98
|
-
assert_equal "/path/to/cache/directory", store.cache_path
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
class CacheStoreNamespaceTest < ActiveSupport::TestCase
|
103
|
-
def test_static_namespace
|
104
|
-
cache = ActiveSupport::Cache.lookup_store(:memory_store, :namespace => "tester")
|
105
|
-
cache.write("foo", "bar")
|
106
|
-
assert_equal "bar", cache.read("foo")
|
107
|
-
assert_equal "bar", cache.instance_variable_get(:@data)["tester:foo"].value
|
108
|
-
end
|
109
|
-
|
110
|
-
def test_proc_namespace
|
111
|
-
test_val = "tester"
|
112
|
-
proc = lambda{test_val}
|
113
|
-
cache = ActiveSupport::Cache.lookup_store(:memory_store, :namespace => proc)
|
114
|
-
cache.write("foo", "bar")
|
115
|
-
assert_equal "bar", cache.read("foo")
|
116
|
-
assert_equal "bar", cache.instance_variable_get(:@data)["tester:foo"].value
|
117
|
-
end
|
118
|
-
|
119
|
-
def test_delete_matched_key_start
|
120
|
-
cache = ActiveSupport::Cache.lookup_store(:memory_store, :namespace => "tester")
|
121
|
-
cache.write("foo", "bar")
|
122
|
-
cache.write("fu", "baz")
|
123
|
-
cache.delete_matched(/^fo/)
|
124
|
-
assert_equal false, cache.exist?("foo")
|
125
|
-
assert_equal true, cache.exist?("fu")
|
126
|
-
end
|
127
|
-
|
128
|
-
def test_delete_matched_key
|
129
|
-
cache = ActiveSupport::Cache.lookup_store(:memory_store, :namespace => "foo")
|
130
|
-
cache.write("foo", "bar")
|
131
|
-
cache.write("fu", "baz")
|
132
|
-
cache.delete_matched(/OO/i)
|
133
|
-
assert_equal false, cache.exist?("foo")
|
134
|
-
assert_equal true, cache.exist?("fu")
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
6
|
# Tests the base functionality that should be identical across all cache stores.
|
139
7
|
module CacheStoreBehavior
|
140
8
|
def test_should_read_and_write_strings
|
@@ -566,24 +434,37 @@ uses_memcached 'memcached backed store' do
|
|
566
434
|
end
|
567
435
|
end
|
568
436
|
end
|
569
|
-
end
|
570
437
|
|
571
|
-
class
|
572
|
-
|
573
|
-
|
438
|
+
class DalliStoreTest < ActiveSupport::TestCase
|
439
|
+
def setup
|
440
|
+
@cache = ActiveSupport::Cache.lookup_store(:dalli_store, :expires_in => 60)
|
441
|
+
@peek = ActiveSupport::Cache.lookup_store(:dalli_store)
|
442
|
+
@data = @cache.instance_variable_get(:@data)
|
443
|
+
@cache.clear
|
444
|
+
@cache.silence!
|
445
|
+
end
|
574
446
|
|
575
|
-
|
576
|
-
|
577
|
-
|
447
|
+
def test_should_read_and_write_strings
|
448
|
+
assert_equal true, @cache.write('foo', 'bar')
|
449
|
+
assert_equal 'bar', @cache.read('foo')
|
450
|
+
end
|
578
451
|
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
452
|
+
def test_should_read_and_write_hash
|
453
|
+
assert_equal true, @cache.write('foo', {:a => "b"})
|
454
|
+
assert_equal({:a => "b"}, @cache.read('foo'))
|
455
|
+
end
|
583
456
|
|
584
|
-
|
585
|
-
|
586
|
-
|
457
|
+
def test_should_read_and_write_integer
|
458
|
+
assert_equal true, @cache.write('foo', 1)
|
459
|
+
assert_equal 1, @cache.read('foo')
|
460
|
+
end
|
461
|
+
|
462
|
+
def test_read_multi
|
463
|
+
@cache.write('foo', 'bar')
|
464
|
+
@cache.write('fu', 'baz')
|
465
|
+
@cache.write('fud', 'biz')
|
466
|
+
assert_equal({"foo" => "bar", "fu" => "baz"}, @cache.read_multi('foo', 'fu'))
|
467
|
+
end
|
587
468
|
end
|
588
469
|
end
|
589
470
|
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-cache-tags
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
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: 2012-07-
|
12
|
+
date: 2012-07-16 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &20459380 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *20459380
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: appraisal
|
27
|
-
requirement: &
|
27
|
+
requirement: &20458680 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *20458680
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitest
|
38
|
-
requirement: &
|
38
|
+
requirement: &20457820 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '3.2'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *20457820
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: memcache-client
|
49
|
-
requirement: &
|
49
|
+
requirement: &20457360 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *20457360
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rack
|
60
|
-
requirement: &
|
60
|
+
requirement: &20456820 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *20456820
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: mocha
|
71
|
-
requirement: &
|
71
|
+
requirement: &20455780 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *20455780
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: simplecov
|
82
|
-
requirement: &
|
82
|
+
requirement: &20454640 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,18 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *20454640
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: dalli
|
93
|
+
requirement: &20440600 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '2.0'
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *20440600
|
91
102
|
description: Tagged caching support for Rails
|
92
103
|
email:
|
93
104
|
- amikhailov83@gmail.com
|
@@ -95,17 +106,13 @@ executables: []
|
|
95
106
|
extensions: []
|
96
107
|
extra_rdoc_files: []
|
97
108
|
files:
|
98
|
-
- .gitignore
|
99
|
-
- Appraisals
|
100
|
-
- Gemfile
|
101
109
|
- LICENSE
|
102
110
|
- README.md
|
103
|
-
- Rakefile
|
104
111
|
- lib/rails-cache-tags.rb
|
105
112
|
- lib/rails/cache/tag.rb
|
113
|
+
- rails-cache-tags.gemspec
|
106
114
|
- lib/rails/cache/tags/store.rb
|
107
115
|
- lib/rails/cache/tags/version.rb
|
108
|
-
- rails-cache-tags.gemspec
|
109
116
|
- test/cache_tags_test.rb
|
110
117
|
- test/caching_test.rb
|
111
118
|
- test/test_helper.rb
|
@@ -121,18 +128,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
121
128
|
- - ! '>='
|
122
129
|
- !ruby/object:Gem::Version
|
123
130
|
version: '0'
|
124
|
-
segments:
|
125
|
-
- 0
|
126
|
-
hash: -1966449301647994117
|
127
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
132
|
none: false
|
129
133
|
requirements:
|
130
134
|
- - ! '>='
|
131
135
|
- !ruby/object:Gem::Version
|
132
136
|
version: '0'
|
133
|
-
segments:
|
134
|
-
- 0
|
135
|
-
hash: -1966449301647994117
|
136
137
|
requirements: []
|
137
138
|
rubyforge_project:
|
138
139
|
rubygems_version: 1.8.17
|
@@ -143,3 +144,4 @@ test_files:
|
|
143
144
|
- test/cache_tags_test.rb
|
144
145
|
- test/caching_test.rb
|
145
146
|
- test/test_helper.rb
|
147
|
+
has_rdoc:
|
data/.gitignore
DELETED
data/Appraisals
DELETED
data/Gemfile
DELETED
data/Rakefile
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
#!/usr/bin/env rake
|
2
|
-
require "bundler/gem_tasks"
|
3
|
-
require 'appraisal'
|
4
|
-
|
5
|
-
desc 'Run tests'
|
6
|
-
task :test do
|
7
|
-
test_dir = File.expand_path(File.join("..", "test"), __FILE__)
|
8
|
-
|
9
|
-
Dir[File.join(test_dir, '**', '*_test.rb')].each { |f| require f }
|
10
|
-
require 'minitest/autorun'
|
11
|
-
end
|