actionpack-action_caching 1.0.0 → 1.1.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.
- checksums.yaml +7 -0
- data/.travis.yml +8 -0
- data/CHANGELOG.md +25 -0
- data/Gemfile +1 -1
- data/README.md +10 -2
- data/actionpack-action_caching.gemspec +3 -3
- data/gemfiles/Gemfile-4-0-stable +5 -0
- data/gemfiles/Gemfile-edge +5 -0
- data/lib/action_controller/caching/actions.rb +19 -2
- data/test/caching_test.rb +18 -0
- metadata +20 -26
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 46985f5100e616356e19180b326cd2fc84f89e4d
|
4
|
+
data.tar.gz: 2c0cd050374dc9d7752b2709ebac2871e5475713
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5146b22ed763f34e220736db5d9c8ddb439d711897fcb0163e081f69b35e2b74c9da5b14580efbb2aa1d4c18af57bfa1524b504ac1d935418d3a92f78f943392
|
7
|
+
data.tar.gz: bc868db0275461bdd6acdcb10005cda5ba75089b6545a9fb71367812c6ad4f39ab26dfbe54e8e7f062b17fc8df8154f8b509366a91af6fcb171656af1c810dac
|
data/.travis.yml
CHANGED
@@ -3,6 +3,14 @@ before_install:
|
|
3
3
|
- gem install bundler
|
4
4
|
rvm:
|
5
5
|
- 1.9.3
|
6
|
+
- 2.0.0
|
7
|
+
gemfile:
|
8
|
+
- Gemfile
|
9
|
+
- gemfiles/Gemfile-edge
|
10
|
+
- gemfiles/Gemfile-4-0-stable
|
11
|
+
matrix:
|
12
|
+
allow_failures:
|
13
|
+
- gemfile: gemfiles/Gemfile-edge
|
6
14
|
notifications:
|
7
15
|
email: false
|
8
16
|
irc:
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
## 1.1.0
|
2
|
+
|
3
|
+
* Allow to use non-proc object in `cache_path` option. You can pass an object that
|
4
|
+
responds to a `call` method.
|
5
|
+
|
6
|
+
Example:
|
7
|
+
|
8
|
+
class CachePath
|
9
|
+
def call(controller)
|
10
|
+
controller.id
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class TestController < ApplicationController
|
15
|
+
caches_action :index, :cache_path => CachePath.new
|
16
|
+
def index; end
|
17
|
+
end
|
18
|
+
|
19
|
+
*Piotr Niełacny*
|
20
|
+
|
21
|
+
## 1.0.0 (February 28, 2013)
|
22
|
+
|
23
|
+
* Extract Action Pack - Action Caching from Rails core.
|
24
|
+
|
25
|
+
*Francesco Rodriguez*
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
actionpack-action_caching
|
2
2
|
=========================
|
3
3
|
|
4
|
-
Action caching for Action Pack (removed from core in Rails 4.0)
|
4
|
+
Action caching for Action Pack (removed from core in Rails 4.0).
|
5
|
+
|
6
|
+
**NOTE:** It will continue to be officially maintained until Rails 4.1.
|
5
7
|
|
6
8
|
Installation
|
7
9
|
------------
|
@@ -85,7 +87,7 @@ The following example depicts some of the points made above:
|
|
85
87
|
|
86
88
|
caches_action :feed, cache_path: Proc.new do
|
87
89
|
if params[:user_id]
|
88
|
-
user_list_url(params[:user_id, params[:id])
|
90
|
+
user_list_url(params[:user_id], params[:id])
|
89
91
|
else
|
90
92
|
list_url(params[:id])
|
91
93
|
end
|
@@ -113,3 +115,9 @@ Contributing
|
|
113
115
|
3. Commit your changes (`git commit -am 'Add some feature'`).
|
114
116
|
4. Push to the branch (`git push origin my-new-feature`).
|
115
117
|
5. Create a new Pull Request.
|
118
|
+
|
119
|
+
Code Status
|
120
|
+
-----------
|
121
|
+
|
122
|
+
* [](https://travis-ci.org/rails/actionpack-action_caching)
|
123
|
+
* [](https://gemnasium.com/rails/actionpack-action_caching)
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
4
|
gem.name = 'actionpack-action_caching'
|
5
|
-
gem.version = '1.
|
5
|
+
gem.version = '1.1.0'
|
6
6
|
gem.author = 'David Heinemeier Hansson'
|
7
7
|
gem.email = 'david@loudthinking.com'
|
8
8
|
gem.description = 'Action caching for Action Pack (removed from core in Rails 4.0)'
|
@@ -14,8 +14,8 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
15
15
|
gem.require_paths = ['lib']
|
16
16
|
|
17
|
-
gem.add_dependency 'actionpack', '>= 4.0.0
|
17
|
+
gem.add_dependency 'actionpack', '>= 4.0.0', '< 5.0'
|
18
18
|
|
19
19
|
gem.add_development_dependency 'mocha'
|
20
|
-
gem.add_development_dependency 'activerecord', '>= 4.0.0.beta', '< 5
|
20
|
+
gem.add_development_dependency 'activerecord', '>= 4.0.0.beta', '< 5'
|
21
21
|
end
|
@@ -36,13 +36,15 @@ module ActionController
|
|
36
36
|
# are treated like separate requests and so are cached separately.
|
37
37
|
# Keep in mind when expiring an action cache that
|
38
38
|
# <tt>action: 'lists'</tt> is not the same as
|
39
|
-
# <tt>action: '
|
39
|
+
# <tt>action: 'lists', format: :xml</tt>.
|
40
40
|
#
|
41
41
|
# You can modify the default action cache path by passing a
|
42
42
|
# <tt>:cache_path</tt> option. This will be passed directly to
|
43
43
|
# <tt>ActionCachePath.new</tt>. This is handy for actions with
|
44
44
|
# multiple possible routes that should be cached differently. If a
|
45
45
|
# block is given, it is called with the current controller instance.
|
46
|
+
# If an object that responds to <tt>call</tt> is given, it'll be called
|
47
|
+
# with the current controller instance.
|
46
48
|
#
|
47
49
|
# And you can also use <tt>:if</tt> (or <tt>:unless</tt>) to pass a
|
48
50
|
# proc that specifies when the action should be cached.
|
@@ -52,6 +54,17 @@ module ActionController
|
|
52
54
|
#
|
53
55
|
# The following example depicts some of the points made above:
|
54
56
|
#
|
57
|
+
# class CachePathCreator
|
58
|
+
# def initialize(name)
|
59
|
+
# @name = name
|
60
|
+
# end
|
61
|
+
#
|
62
|
+
# def call(controller)
|
63
|
+
# "cache-path-#{@name}"
|
64
|
+
# end
|
65
|
+
# end
|
66
|
+
#
|
67
|
+
#
|
55
68
|
# class ListsController < ApplicationController
|
56
69
|
# before_filter :authenticate, except: :public
|
57
70
|
#
|
@@ -71,6 +84,8 @@ module ActionController
|
|
71
84
|
# list_url(params[:id])
|
72
85
|
# end
|
73
86
|
# end
|
87
|
+
#
|
88
|
+
# caches_action :posts, cache_path: CachePathCreator.new('posts')
|
74
89
|
# end
|
75
90
|
#
|
76
91
|
# If you pass <tt>layout: false</tt>, it will only cache your action
|
@@ -139,8 +154,10 @@ module ActionController
|
|
139
154
|
def around(controller)
|
140
155
|
cache_layout = @cache_layout.respond_to?(:call) ? @cache_layout.call(controller) : @cache_layout
|
141
156
|
|
142
|
-
path_options = if @cache_path.
|
157
|
+
path_options = if @cache_path.is_a?(Proc)
|
143
158
|
controller.instance_exec(controller, &@cache_path)
|
159
|
+
elsif @cache_path.respond_to?(:call)
|
160
|
+
@cache_path.call(controller)
|
144
161
|
else
|
145
162
|
@cache_path
|
146
163
|
end
|
data/test/caching_test.rb
CHANGED
@@ -10,6 +10,12 @@ class CachingController < ActionController::Base
|
|
10
10
|
self.cache_store = :file_store, FILE_STORE_PATH
|
11
11
|
end
|
12
12
|
|
13
|
+
class CachePath
|
14
|
+
def call(controller)
|
15
|
+
['controller', controller.params[:id]].compact.join('-')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
13
19
|
class ActionCachingTestController < CachingController
|
14
20
|
rescue_from(Exception) { head 500 }
|
15
21
|
rescue_from(ActionController::UnknownFormat) { head :not_acceptable }
|
@@ -23,6 +29,7 @@ class ActionCachingTestController < CachingController
|
|
23
29
|
caches_action :index, :redirected, :forbidden, if: Proc.new { |c| c.request.format && !c.request.format.json? }, expires_in: 1.hour
|
24
30
|
caches_action :show, cache_path: 'http://test.host/custom/show'
|
25
31
|
caches_action :edit, cache_path: Proc.new { |c| c.params[:id] ? "http://test.host/#{c.params[:id]};edit" : 'http://test.host/edit' }
|
32
|
+
caches_action :custom_cache_path, cache_path: CachePath.new
|
26
33
|
caches_action :with_layout
|
27
34
|
caches_action :with_format_and_http_param, cache_path: Proc.new { |c| { key: 'value' } }
|
28
35
|
caches_action :layout_false, layout: false
|
@@ -73,6 +80,7 @@ class ActionCachingTestController < CachingController
|
|
73
80
|
alias_method :show, :index
|
74
81
|
alias_method :edit, :index
|
75
82
|
alias_method :destroy, :index
|
83
|
+
alias_method :custom_cache_path, :index
|
76
84
|
alias_method :layout_false, :with_layout
|
77
85
|
alias_method :with_layout_proc_param, :with_layout
|
78
86
|
|
@@ -291,6 +299,16 @@ class ActionCacheTest < ActionController::TestCase
|
|
291
299
|
assert fragment_exist?('test.host/1;edit')
|
292
300
|
end
|
293
301
|
|
302
|
+
def test_action_cache_with_custom_cache_path_with_custom_object
|
303
|
+
get :custom_cache_path
|
304
|
+
assert_response :success
|
305
|
+
assert fragment_exist?('controller')
|
306
|
+
|
307
|
+
get :custom_cache_path, id: 1
|
308
|
+
assert_response :success
|
309
|
+
assert fragment_exist?('controller-1')
|
310
|
+
end
|
311
|
+
|
294
312
|
def test_cache_expiration
|
295
313
|
get :index
|
296
314
|
assert_response :success
|
metadata
CHANGED
@@ -1,76 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: actionpack-action_caching
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- David Heinemeier Hansson
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-11-01 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: actionpack
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 4.0.0
|
19
|
+
version: 4.0.0
|
22
20
|
- - <
|
23
21
|
- !ruby/object:Gem::Version
|
24
22
|
version: '5.0'
|
25
23
|
type: :runtime
|
26
24
|
prerelease: false
|
27
25
|
version_requirements: !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
26
|
requirements:
|
30
|
-
- -
|
27
|
+
- - '>='
|
31
28
|
- !ruby/object:Gem::Version
|
32
|
-
version: 4.0.0
|
29
|
+
version: 4.0.0
|
33
30
|
- - <
|
34
31
|
- !ruby/object:Gem::Version
|
35
32
|
version: '5.0'
|
36
33
|
- !ruby/object:Gem::Dependency
|
37
34
|
name: mocha
|
38
35
|
requirement: !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
36
|
requirements:
|
41
|
-
- -
|
37
|
+
- - '>='
|
42
38
|
- !ruby/object:Gem::Version
|
43
39
|
version: '0'
|
44
40
|
type: :development
|
45
41
|
prerelease: false
|
46
42
|
version_requirements: !ruby/object:Gem::Requirement
|
47
|
-
none: false
|
48
43
|
requirements:
|
49
|
-
- -
|
44
|
+
- - '>='
|
50
45
|
- !ruby/object:Gem::Version
|
51
46
|
version: '0'
|
52
47
|
- !ruby/object:Gem::Dependency
|
53
48
|
name: activerecord
|
54
49
|
requirement: !ruby/object:Gem::Requirement
|
55
|
-
none: false
|
56
50
|
requirements:
|
57
|
-
- -
|
51
|
+
- - '>='
|
58
52
|
- !ruby/object:Gem::Version
|
59
53
|
version: 4.0.0.beta
|
60
54
|
- - <
|
61
55
|
- !ruby/object:Gem::Version
|
62
|
-
version: '5
|
56
|
+
version: '5'
|
63
57
|
type: :development
|
64
58
|
prerelease: false
|
65
59
|
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
60
|
requirements:
|
68
|
-
- -
|
61
|
+
- - '>='
|
69
62
|
- !ruby/object:Gem::Version
|
70
63
|
version: 4.0.0.beta
|
71
64
|
- - <
|
72
65
|
- !ruby/object:Gem::Version
|
73
|
-
version: '5
|
66
|
+
version: '5'
|
74
67
|
description: Action caching for Action Pack (removed from core in Rails 4.0)
|
75
68
|
email: david@loudthinking.com
|
76
69
|
executables: []
|
@@ -79,11 +72,14 @@ extra_rdoc_files: []
|
|
79
72
|
files:
|
80
73
|
- .gitignore
|
81
74
|
- .travis.yml
|
75
|
+
- CHANGELOG.md
|
82
76
|
- Gemfile
|
83
77
|
- LICENSE.txt
|
84
78
|
- README.md
|
85
79
|
- Rakefile
|
86
80
|
- actionpack-action_caching.gemspec
|
81
|
+
- gemfiles/Gemfile-4-0-stable
|
82
|
+
- gemfiles/Gemfile-edge
|
87
83
|
- lib/action_controller/action_caching.rb
|
88
84
|
- lib/action_controller/caching/actions.rb
|
89
85
|
- lib/actionpack/action_caching.rb
|
@@ -92,30 +88,28 @@ files:
|
|
92
88
|
- test/fixtures/layouts/talk_from_action.erb
|
93
89
|
homepage: https://github.com/rails/actionpack-action_caching
|
94
90
|
licenses: []
|
91
|
+
metadata: {}
|
95
92
|
post_install_message:
|
96
93
|
rdoc_options: []
|
97
94
|
require_paths:
|
98
95
|
- lib
|
99
96
|
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
-
none: false
|
101
97
|
requirements:
|
102
|
-
- -
|
98
|
+
- - '>='
|
103
99
|
- !ruby/object:Gem::Version
|
104
100
|
version: '0'
|
105
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
-
none: false
|
107
102
|
requirements:
|
108
|
-
- -
|
103
|
+
- - '>='
|
109
104
|
- !ruby/object:Gem::Version
|
110
105
|
version: '0'
|
111
106
|
requirements: []
|
112
107
|
rubyforge_project:
|
113
|
-
rubygems_version:
|
108
|
+
rubygems_version: 2.0.3
|
114
109
|
signing_key:
|
115
|
-
specification_version:
|
110
|
+
specification_version: 4
|
116
111
|
summary: Action caching for Action Pack (removed from core in Rails 4.0)
|
117
112
|
test_files:
|
118
113
|
- test/abstract_unit.rb
|
119
114
|
- test/caching_test.rb
|
120
115
|
- test/fixtures/layouts/talk_from_action.erb
|
121
|
-
has_rdoc:
|