rails-cache-tags 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+
3
+ require 'bundler/setup'
4
+
5
+ require 'simplecov'
6
+
7
+ RSpec.configure do |config|
8
+ config.treat_symbols_as_metadata_keys_with_true_values = true
9
+ config.order = 'random'
10
+
11
+ config.around(:each, :memcache) do |example|
12
+ require 'memcache'
13
+ begin
14
+ MemCache.new('localhost:11211').stats
15
+ example.run
16
+ rescue MemCache::MemCacheError
17
+ $stderr.puts 'Skipping Memcached tests. Start memcached and try again.'
18
+ end
19
+ end
20
+ end
21
+
22
+ SimpleCov.start 'test_frameworks'
23
+
24
+ require 'rails-cache-tags'
metadata CHANGED
@@ -1,104 +1,155 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-cache-tags
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
5
- prerelease:
4
+ version: 1.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Alexei Mikhailov
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-07-16 00:00:00.000000000Z
11
+ date: 2014-02-12 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: rails
16
- requirement: &20459380 !ruby/object:Gem::Requirement
17
- none: false
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '3.0'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *20459380
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: i18n
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
25
41
  - !ruby/object:Gem::Dependency
26
42
  name: appraisal
27
- requirement: &20458680 !ruby/object:Gem::Requirement
28
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
29
44
  requirements:
30
- - - ! '>='
45
+ - - '>='
31
46
  - !ruby/object:Gem::Version
32
47
  version: '0'
33
48
  type: :development
34
49
  prerelease: false
35
- version_requirements: *20458680
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
36
55
  - !ruby/object:Gem::Dependency
37
56
  name: minitest
38
- requirement: &20457820 !ruby/object:Gem::Requirement
39
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
40
58
  requirements:
41
59
  - - ~>
42
60
  - !ruby/object:Gem::Version
43
- version: '3.2'
61
+ version: '4.2'
44
62
  type: :development
45
63
  prerelease: false
46
- version_requirements: *20457820
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '4.2'
47
69
  - !ruby/object:Gem::Dependency
48
70
  name: memcache-client
49
- requirement: &20457360 !ruby/object:Gem::Requirement
50
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
51
72
  requirements:
52
- - - ! '>='
73
+ - - '>='
53
74
  - !ruby/object:Gem::Version
54
75
  version: '0'
55
76
  type: :development
56
77
  prerelease: false
57
- version_requirements: *20457360
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
58
83
  - !ruby/object:Gem::Dependency
59
84
  name: rack
60
- requirement: &20456820 !ruby/object:Gem::Requirement
61
- none: false
85
+ requirement: !ruby/object:Gem::Requirement
62
86
  requirements:
63
- - - ! '>='
87
+ - - '>='
64
88
  - !ruby/object:Gem::Version
65
89
  version: '0'
66
90
  type: :development
67
91
  prerelease: false
68
- version_requirements: *20456820
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: mocha
71
- requirement: &20455780 !ruby/object:Gem::Requirement
72
- none: false
99
+ requirement: !ruby/object:Gem::Requirement
73
100
  requirements:
74
- - - ! '>='
101
+ - - '>='
75
102
  - !ruby/object:Gem::Version
76
103
  version: '0'
77
104
  type: :development
78
105
  prerelease: false
79
- version_requirements: *20455780
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
80
111
  - !ruby/object:Gem::Dependency
81
112
  name: simplecov
82
- requirement: &20454640 !ruby/object:Gem::Requirement
83
- none: false
113
+ requirement: !ruby/object:Gem::Requirement
84
114
  requirements:
85
- - - ! '>='
115
+ - - '>='
86
116
  - !ruby/object:Gem::Version
87
117
  version: '0'
88
118
  type: :development
89
119
  prerelease: false
90
- version_requirements: *20454640
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
91
125
  - !ruby/object:Gem::Dependency
92
126
  name: dalli
93
- requirement: &20440600 !ruby/object:Gem::Requirement
94
- none: false
127
+ requirement: !ruby/object:Gem::Requirement
95
128
  requirements:
96
- - - ! '>='
129
+ - - '>='
97
130
  - !ruby/object:Gem::Version
98
131
  version: '2.0'
99
132
  type: :development
100
133
  prerelease: false
101
- version_requirements: *20440600
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '2.0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
102
153
  description: Tagged caching support for Rails
103
154
  email:
104
155
  - amikhailov83@gmail.com
@@ -106,42 +157,38 @@ executables: []
106
157
  extensions: []
107
158
  extra_rdoc_files: []
108
159
  files:
109
- - LICENSE
110
- - README.md
111
160
  - lib/rails-cache-tags.rb
112
- - lib/rails/cache/tag.rb
113
- - rails-cache-tags.gemspec
161
+ - lib/rails/cache/tags/action_controller.rb
162
+ - lib/rails/cache/tags/set.rb
114
163
  - lib/rails/cache/tags/store.rb
164
+ - lib/rails/cache/tags/tag.rb
115
165
  - lib/rails/cache/tags/version.rb
116
- - test/cache_tags_test.rb
117
- - test/caching_test.rb
118
- - test/test_helper.rb
166
+ - spec/cache_tags_spec.rb
167
+ - spec/spec_helper.rb
119
168
  homepage: https://github.com/take-five/rails-cache-tags
120
169
  licenses: []
170
+ metadata: {}
121
171
  post_install_message:
122
172
  rdoc_options: []
123
173
  require_paths:
124
174
  - lib
125
175
  required_ruby_version: !ruby/object:Gem::Requirement
126
- none: false
127
176
  requirements:
128
- - - ! '>='
177
+ - - '>='
129
178
  - !ruby/object:Gem::Version
130
179
  version: '0'
131
180
  required_rubygems_version: !ruby/object:Gem::Requirement
132
- none: false
133
181
  requirements:
134
- - - ! '>='
182
+ - - '>='
135
183
  - !ruby/object:Gem::Version
136
184
  version: '0'
137
185
  requirements: []
138
186
  rubyforge_project:
139
- rubygems_version: 1.8.17
187
+ rubygems_version: 2.1.10
140
188
  signing_key:
141
- specification_version: 3
189
+ specification_version: 4
142
190
  summary: Tagged caching support for Rails
143
191
  test_files:
144
- - test/cache_tags_test.rb
145
- - test/caching_test.rb
146
- - test/test_helper.rb
192
+ - spec/cache_tags_spec.rb
193
+ - spec/spec_helper.rb
147
194
  has_rdoc:
data/LICENSE DELETED
@@ -1,22 +0,0 @@
1
- Copyright (c) 2012 Alexei Mikhailov
2
-
3
- MIT License
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md DELETED
@@ -1,90 +0,0 @@
1
- # Synopsys
2
-
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!
5
-
6
- # Installation
7
-
8
- Add this line to your application's Gemfile:
9
-
10
- gem 'rails-cache-tags'
11
-
12
- And then execute:
13
-
14
- $ bundle
15
-
16
- Or install it yourself as:
17
-
18
- $ gem install rails-cache-tags
19
-
20
- # Usage
21
-
22
- Anywhere:
23
-
24
- ```ruby
25
- cache = Rails.cache
26
-
27
- cache.write "foo", "bar", :tags => %w(baz foo)
28
- cache.read "foo" # => "bar"
29
-
30
- cache.delete_tag "baz"
31
- cache.read "foo" => nil
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
-
67
- In your controller:
68
- ```ruby
69
- class PostController < ActionController::Base
70
- def update
71
- @post = Post.find_by_id(params[:id])
72
-
73
- if @post.update_attributes(params)
74
- expire_fragments_by_tags :post => @post.id
75
- else
76
- render :edit
77
- end
78
- end
79
- end
80
- ```
81
-
82
- # Contributing
83
-
84
- 1. Fork it
85
- 2. Create your feature branch (`git checkout -b my-new-feature`)
86
- 3. Commit your changes (`git commit -am 'Added some feature'`)
87
- 4. Write tests!
88
- 5. Run tests against all major version of Rails starting from 3.0
89
- 6. Push to the branch (`git push origin my-new-feature`)
90
- 7. Create new Pull Request
@@ -1,58 +0,0 @@
1
- require "active_support/cache"
2
-
3
- module Rails
4
- module Cache
5
- class Tag #:nodoc:all:
6
- KEY_PREFIX = '_tags'
7
-
8
- class << self
9
- # {:post => ['1', '2', '3']} => [Tag(post/1), Tag(post/2), Tag(post/3)]
10
- # {:post => 1, :user => 2} => [Tag(post/1), Tag(user/2)]
11
- # ['post/1', 'post/2', 'post/3'] => [Tag(post/1), Tag(post/2), Tag(post/3)]
12
- def build_tags(names)
13
- case names
14
- when NilClass then nil
15
- when Hash then names.map do |key, value|
16
- Array.wrap(value).map { |v| new([key, v]) }
17
- end.flatten
18
- when Enumerable then names.map { |v| build_tags(v) }.flatten
19
- when self then names
20
- else [new(names)]
21
- end
22
- end
23
- end
24
-
25
- attr_reader :name
26
-
27
- # Tag constructor
28
- def initialize(name)
29
- @name = ActiveSupport::Cache.expand_cache_key name
30
- end
31
-
32
- # real cache key
33
- def to_key
34
- [KEY_PREFIX, name].join('/')
35
- end
36
-
37
- # read tag's version from +store+
38
- def fetch(store)
39
- store.read(to_key)
40
- end
41
-
42
- # increment tag's version inside +store+
43
- def increment(store)
44
- current = fetch(store)
45
-
46
- version = if current.is_a?(Fixnum)
47
- current + 1
48
- else
49
- 1
50
- end
51
-
52
- store.write(to_key, version, :expires_in => nil)
53
-
54
- version
55
- end
56
- end # class Tag
57
- end # module Cache
58
- end # module Rails
@@ -1,26 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/rails/cache/tags/version', __FILE__)
3
-
4
- Gem::Specification.new do |gem|
5
- gem.authors = ["Alexei Mikhailov"]
6
- gem.email = %W(amikhailov83@gmail.com)
7
- gem.description = %q{Tagged caching support for Rails}
8
- gem.summary = %q{Tagged caching support for Rails}
9
- gem.homepage = "https://github.com/take-five/rails-cache-tags"
10
-
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
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
- gem.name = "rails-cache-tags"
14
- gem.require_paths = %W(lib)
15
- gem.version = Rails::Cache::Tags::VERSION
16
-
17
- gem.add_dependency "rails", ">= 3.0"
18
-
19
- gem.add_development_dependency 'appraisal'
20
- gem.add_development_dependency 'minitest', '~> 3.2'
21
- gem.add_development_dependency 'memcache-client'
22
- gem.add_development_dependency 'rack'
23
- gem.add_development_dependency 'mocha'
24
- gem.add_development_dependency 'simplecov'
25
- gem.add_development_dependency 'dalli', '>= 2.0'
26
- end