paginate_cached 1.0 → 1.01
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/paginate_cached/paginate_cached.rb +37 -0
- data/lib/paginate_cached/railtie.rb +5 -0
- data/lib/paginate_cached.rb +1 -38
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 019c6b81fdcc83fb2d972c248a306481002f57a3
|
4
|
+
data.tar.gz: 8fa5db699cb800a2cf4a9bbe2fb51773d7b63f7a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4c74129c43bc1e592fc3096411a88bd050e6dd6ac16911dedcc9bbc47434f2d2a16ea0d7d83e0760a101629f0a311b38d0c957df5786aac9ca6eb5435517e79
|
7
|
+
data.tar.gz: 447319c0c7e43effd340d8778a83e158421a45cb4add367455be091c922a8747e297f7c445b3f97da5442a5e6541e84fdc4c272064db864c7c8d7811c1a5c0bf
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module PaginateCached
|
2
|
+
module ControllerHelpers
|
3
|
+
# Arguments:
|
4
|
+
# This function takes :page as the page number, it defaults to 0.
|
5
|
+
# The number of results is passed in as :number_of_results. It defaults to 20.
|
6
|
+
# The variable used to hold the current state in the pagination should be placed
|
7
|
+
# in the :search_id variable.
|
8
|
+
#
|
9
|
+
# The actual code which produces the result is passed in as a block.
|
10
|
+
#
|
11
|
+
# Results:
|
12
|
+
# This returns a hash in which :results will hold the results, :search_id will hold the search id,
|
13
|
+
# next_page: will hold the new page number, and has_more_results will hold whether there are more results.
|
14
|
+
#
|
15
|
+
def paginate_cached args={}
|
16
|
+
page = args[:page] || 1
|
17
|
+
number_of_results = args[:number_of_results] || 25
|
18
|
+
search_id = args[:search_id]
|
19
|
+
offset = (page-1)*number_of_results
|
20
|
+
|
21
|
+
unless search_id and results = Rails.cache.read(search_id) then
|
22
|
+
results = yield
|
23
|
+
search_id = "#{results.hash}#{Time.now.to_i}"
|
24
|
+
Rails.cache.write search_id, results, expires_in: 15.minutes
|
25
|
+
end
|
26
|
+
|
27
|
+
return {
|
28
|
+
results: results[offset, number_of_results],
|
29
|
+
search_id: search_id,
|
30
|
+
next_page: page+1,
|
31
|
+
has_more_results: results[((page)*number_of_results)+1] != nil
|
32
|
+
}
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
data/lib/paginate_cached.rb
CHANGED
@@ -1,38 +1 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
# Arguments:
|
4
|
-
# This function takes :page as the page number, and it is required.
|
5
|
-
# The number of results is passed in as :number_of_results. It defaults to 20.
|
6
|
-
# The variable used to hold the current state in the pagination should be placed
|
7
|
-
# in the :search_id variable.
|
8
|
-
#
|
9
|
-
# The actual code which produces the result is passed in as a block.
|
10
|
-
#
|
11
|
-
# Results:
|
12
|
-
# This returns a hash in which :results will hold the results, :search_id will hold the search id,
|
13
|
-
# next_page: will hold the new page number, and has_more_results will hold whether there are more results.
|
14
|
-
#
|
15
|
-
def paginate_cached args={}
|
16
|
-
page = args[:page] or raise "Page number must be defined."
|
17
|
-
number_of_results = args[:number_of_results] || 25
|
18
|
-
search_id = args[:search_id]
|
19
|
-
offset = (page-1)*number_of_results
|
20
|
-
|
21
|
-
unless search_id and results = Rails.cache.read(search_id) then
|
22
|
-
results = yield
|
23
|
-
search_id = "#{results.hash}#{Time.now.to_i}"
|
24
|
-
Rails.cache.write search_id, results, expires_id: 15.minutes
|
25
|
-
end
|
26
|
-
|
27
|
-
return {
|
28
|
-
results: results[offset, number_of_results],
|
29
|
-
search_id: search_id,
|
30
|
-
next_page: page+1,
|
31
|
-
has_more_results: results[((page)*number_of_results)+1] != nil
|
32
|
-
}
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
ActionController::Base.send :include, PaginateCached
|
37
|
-
|
38
|
-
end
|
1
|
+
require 'paginate_cached/railtie.rb' if defined?(Rails)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paginate_cached
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.01'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Kyte
|
@@ -18,6 +18,8 @@ extra_rdoc_files: []
|
|
18
18
|
files:
|
19
19
|
- lib/paginate_cached.rb
|
20
20
|
- init.rb
|
21
|
+
- lib/paginate_cached/paginate_cached.rb
|
22
|
+
- lib/paginate_cached/railtie.rb
|
21
23
|
homepage: http://github.com/alexanderkyte/paginate_cached
|
22
24
|
licenses: []
|
23
25
|
metadata: {}
|