her-kaminari 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8ffa99110a7233d0838f61953d48c94981debe48
4
+ data.tar.gz: d3bde921ef86247057bd5d1de920e58988d208f0
5
+ SHA512:
6
+ metadata.gz: c74a8d242f69d2ce6f2662d05acc7f3b0a9211270353197ee2221a29ff60c07547a1fcf80cfecc36a96cf8399b34c14711619238aad05b94c5060e752edd81d9
7
+ data.tar.gz: 54867a070c7a429fee9a1a74135b7d5473b4cf178f523d96c69279d28c814fcaf83c4e4026915a9991d90160e15c230f1b3fb5ac95debf4589547aca444476f6
@@ -0,0 +1,15 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
15
+ *.gem
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in her-kaminari.gemspec
4
+ gemspec
@@ -0,0 +1,7 @@
1
+ # Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+ guard :minitest do
4
+ watch(%r{^test/test_helper\.rb}) { 'test' }
5
+ watch(%r{^test/.+_test\.rb})
6
+ watch(%r{^lib/(.+).rb$}) { |m| "test/lib/#{m[1]}_test.rb" }
7
+ end
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 Daniel Blanco Rojas
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Daniel Blanco Rojas
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.
@@ -0,0 +1,82 @@
1
+ # Her::Kaminari
2
+
3
+ Makes [Her](https://github.com/remiprev/her "ORM that maps REST resources to Ruby objects") aware of APIs that return pagination headers like [grape-kaminari](https://github.com/monterail/grape-kaminari "kaminari paginator integration for grape API framework") gem.
4
+
5
+ Her models can now query these APIs like any other kaminari model:
6
+
7
+ ```ruby
8
+ User.page(1).per(10)
9
+ ```
10
+
11
+ **IMPORTANT:** Pagination is done by the API not by this gem, this gem just parses
12
+ the response data and creates a Kaminari compatible collection that you can use in
13
+ your views.
14
+
15
+ ## Gem Dependencies
16
+
17
+ * [Her](https://github.com/remiprev/her "ORM that maps REST resources to Ruby objects")
18
+ * [Kaminari](https://github.com/amatsuda/kaminari "Paginator for Rails")
19
+
20
+ ## Installation
21
+
22
+ Add this line to your application's Gemfile:
23
+
24
+ ```ruby
25
+ gem 'her-kaminari'
26
+ ```
27
+
28
+ And then execute:
29
+
30
+ $ bundle
31
+
32
+ Or install it yourself as:
33
+
34
+ $ gem install her-kaminari
35
+
36
+ ## Usage
37
+
38
+ First include Her::Kaminari::HeaderParser in your Her setup like this:
39
+
40
+ ```ruby
41
+ Her::API.setup url: 'https://api.example.com' do |c|
42
+ #...
43
+
44
+ # Response
45
+ c.use Her::Kaminari::HeaderParser
46
+
47
+ # ...
48
+ end
49
+ ```
50
+
51
+ HeaderParser expects that the API request returns the following headers:
52
+
53
+ ```
54
+ X-Total: Total number of records.
55
+ X-Page: Current page number.
56
+ X-Per-Page: Number of records per page.
57
+ X-Offset: (optional) the starting point for the return data.
58
+ ```
59
+
60
+
61
+ Then include Her::Kaminari::Collection in your Her model like this:
62
+
63
+ ```ruby
64
+ class User
65
+ include Her::Model
66
+ include Her::Kaminari::Collection
67
+ end
68
+ ```
69
+
70
+ Now you can use your Her model like any other Kaminari model.
71
+
72
+ ## History
73
+
74
+ After reading [How to pass pagination headers with Kaminari, Her and Grape?](http://aenain.github.io/2014/05/27/how-to-pass-pagination-headers-with-kaminari-her-and-grape.html) post by [Artur Hebda](http://aenain.github.io) I decided that it was a good idea to create a gem with his code.
75
+
76
+ ## Contributing
77
+
78
+ 1. Fork it ( https://github.com/[my-github-username]/her-kaminari/fork )
79
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
80
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
81
+ 4. Push to the branch (`git push origin my-new-feature`)
82
+ 5. Create a new Pull Request
@@ -0,0 +1,11 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.libs << 'test'
6
+ t.pattern = 'test/**/*_test.rb'
7
+ t.verbose = true
8
+ end
9
+
10
+
11
+ task :default => :test
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'her/kaminari/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "her-kaminari"
8
+ spec.version = Her::Kaminari::VERSION
9
+ spec.authors = ["Daniel Blanco Rojas, Artur Hebda"]
10
+ spec.email = ["daniel.blancorojas@gmail.com"]
11
+ spec.summary = %q{Kaminari pagination for Her models.}
12
+ spec.description = %q{Makes Her aware of APIs that return pagination headers.}
13
+ spec.homepage = "https://github.com/DanielBlanco/her-kaminari"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency 'her', '~> 0.7', '>= 0.7.2'
22
+ spec.add_runtime_dependency 'kaminari', '~> 0.16.1', '>= 0.16.1'
23
+
24
+ spec.add_development_dependency 'bundler', '~> 1.7'
25
+ spec.add_development_dependency 'rake', '~> 10.0'
26
+ spec.add_development_dependency 'minitest', '~> 5.0'
27
+ spec.add_development_dependency 'pry', '~> 0.10.1', '>= 0.10.1'
28
+ spec.add_development_dependency 'guard', '~> 2.6.1', '>= 2.6.1'
29
+ spec.add_development_dependency 'guard-minitest', '~> 2.3.2', '>= 2.3.2'
30
+ spec.add_development_dependency 'grape', '~> 0.9.0', '>= 0.9.0' # <= Just to shut up kaminari warning
31
+ end
@@ -0,0 +1,13 @@
1
+ # -*- encoding : utf-8 -*-
2
+ # lib/her/kaminari.rb
3
+
4
+ require 'her'
5
+
6
+ module Her
7
+ module Kaminari
8
+ end
9
+ end
10
+
11
+ require 'her/kaminari/collection'
12
+ require 'her/kaminari/header_parser'
13
+ require 'her/kaminari/version'
@@ -0,0 +1,54 @@
1
+ # -*- encoding : utf-8 -*-
2
+ # lib/her/kaminari/collection.rb
3
+ require 'kaminari'
4
+ require 'kaminari/models/array_extension'
5
+
6
+ module Her
7
+ module Kaminari
8
+ module Collection
9
+ def self.included(base)
10
+ base.class_eval do
11
+ # support for kaminari pagination methods
12
+ scope :page, ->(page) { where(page: page || 1) }
13
+ scope :per, ->(per_page) { where(per_page: per_page || 50) }
14
+ end
15
+ base.extend(ClassMethods)
16
+ end
17
+
18
+ module ClassMethods
19
+
20
+ # Creates a new paginated collection from API data.
21
+ # This method makes the assumption the collection was already paginated
22
+ # by the API.
23
+ #
24
+ # @return [Kaminari::PaginatableArray] a paginated collection
25
+ def new_collection(parsed_data)
26
+ collection = super(parsed_data)
27
+ pagination = parsed_data[:pagination]
28
+ collection = ::Kaminari::PaginatableArray.new(
29
+ collection,
30
+ total_count: pagination[:total_count],
31
+ limit: pagination[:per_page]
32
+ ).tap do |array|
33
+ array.extend ::Kaminari::PageScopeMethods
34
+ array.singleton_class.class_eval do
35
+
36
+ # @return [Integer] our API page number
37
+ define_method :current_page do
38
+ pagination[:page]
39
+ end
40
+
41
+ # @return [Integer] our API offset number
42
+ define_method :offset_value do
43
+ pagination[:offset]
44
+ end
45
+
46
+ end
47
+ end
48
+ collection
49
+ end
50
+
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,32 @@
1
+ # -*- encoding : utf-8 -*-
2
+ # lib/her/kaminari/header_parser.rb
3
+ module Her
4
+ module Kaminari
5
+ class HeaderParser < Faraday::Response::Middleware
6
+
7
+ # @param [Hash] env environment
8
+ def on_complete(env)
9
+ @env = env
10
+
11
+ pagination = {
12
+ total_count: header("x-total").to_i,
13
+ per_page: (header("x-per-page") || env.body[:data].count).to_i,
14
+ page: header("x-page").to_i,
15
+ offset: header('x-offset').to_i
16
+ }
17
+
18
+ env[:body].merge!(pagination: pagination)
19
+ end
20
+
21
+ private
22
+
23
+ # Returns a response header value.
24
+ #
25
+ # @param [String] name of the header attribute
26
+ # @return [String] the response header value
27
+ def header(name)
28
+ @env.response_headers[name]
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,6 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module Her
3
+ module Kaminari
4
+ VERSION = "0.0.1"
5
+ end
6
+ end
@@ -0,0 +1,23 @@
1
+ # -*- encoding : utf-8 -*-
2
+ # test/lib/her/kaminari/collection_test.rb
3
+ require 'test_helper'
4
+
5
+ describe Her::Kaminari::Collection do
6
+ before do
7
+ class Champion
8
+ include Her::Model
9
+ include Her::Kaminari::Collection
10
+ end
11
+ end
12
+
13
+ it 'should query by kaminari methods' do
14
+ champions = Champion.page(2).per(2)
15
+ #binding.pry
16
+ champions.size.must_equal 2
17
+ champions.current_page.must_equal 2
18
+ champions.total_count.must_equal 9
19
+ champions.first.id.must_equal 3
20
+ end
21
+
22
+ end
23
+
@@ -0,0 +1,21 @@
1
+ # -*- encoding : utf-8 -*-
2
+ # test/lib/her/kaminari_test.rb
3
+ require 'test_helper'
4
+
5
+ describe Her::Kaminari::HeaderParser do
6
+
7
+ subject { Her::Kaminari::HeaderParser.new }
8
+ let(:body) { { 'data' => [1,2,3,4,5] } }
9
+ let(:headers) { {'x-total'=>5, 'x-page'=> 1, 'x-per-page' => 3 } }
10
+
11
+ it 'parses pagination headers' do
12
+ env = OpenStruct.new(body: body, response_headers: headers)
13
+ subject.on_complete(env)
14
+ env[:body].tap do |json|
15
+ expected = {total_count: 5, per_page: 3, page: 1, offset: 0 }
16
+ json[:pagination].must_equal expected
17
+ end
18
+ end
19
+
20
+ end
21
+
@@ -0,0 +1,11 @@
1
+ # -*- encoding : utf-8 -*-
2
+ # test/lib/her/kaminari_test.rb
3
+ require 'test_helper'
4
+
5
+ describe Her::Kaminari do
6
+
7
+ it 'must be defined' do
8
+ Her::Kaminari::VERSION.wont_be_nil
9
+ end
10
+
11
+ end
File without changes
@@ -0,0 +1,38 @@
1
+ # -*- encoding : utf-8 -*-
2
+ # support/her_api.rbj
3
+
4
+ # Her setup
5
+ Her::API.setup url: 'https://api.example.com' do |c|
6
+ # Request
7
+ c.use Faraday::Request::UrlEncoded
8
+
9
+ # Response
10
+ c.use Her::Kaminari::HeaderParser
11
+ c.use Her::Middleware::DefaultParseJSON
12
+
13
+ # Adapter
14
+ c.adapter :test do |stub|
15
+ stub.get("/champions") do |env|
16
+ champions = [
17
+ { id: 1, name: 'Aatrox'},
18
+ { id: 2, name: 'Ahri'},
19
+ { id: 3, name: 'Akali'},
20
+ { id: 4, name: 'Alistar' },
21
+ { id: 5, name: 'Amumu' },
22
+ { id: 6, name: 'Anivia' },
23
+ { id: 7, name: 'Annie' },
24
+ { id: 8, name: 'Ashe' },
25
+ { id: 9, name: 'Azir' }
26
+ ]
27
+ page = (env.params['page'] || 1).to_i
28
+ per_page = (env.params['per_page'] || 5).to_i
29
+ headers = {
30
+ 'x-total' => champions.size,
31
+ 'x-page' => page,
32
+ 'x-per-page' => per_page
33
+ }
34
+ champions = ::Kaminari.paginate_array(champions).page(page).per(per_page)
35
+ [200, headers, champions.to_json]
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,14 @@
1
+ # -*- encoding : utf-8 -*-
2
+ # test/test_helper.rb
3
+ ENV['RACK_ENV'] = 'test'
4
+
5
+ require 'minitest/spec'
6
+ require 'minitest/autorun'
7
+ require 'minitest/pride'
8
+ require 'json'
9
+ require 'rack/test'
10
+ require 'pry'
11
+ require 'grape'
12
+ require 'her/kaminari'
13
+ require 'support/her_api'
14
+
metadata ADDED
@@ -0,0 +1,230 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: her-kaminari
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Blanco Rojas, Artur Hebda
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: her
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.7'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.7.2
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.7'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.7.2
33
+ - !ruby/object:Gem::Dependency
34
+ name: kaminari
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 0.16.1
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.16.1
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 0.16.1
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 0.16.1
53
+ - !ruby/object:Gem::Dependency
54
+ name: bundler
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '1.7'
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '1.7'
67
+ - !ruby/object:Gem::Dependency
68
+ name: rake
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '10.0'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '10.0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: minitest
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '5.0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '5.0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: pry
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: 0.10.1
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 0.10.1
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: 0.10.1
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: 0.10.1
115
+ - !ruby/object:Gem::Dependency
116
+ name: guard
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: 2.6.1
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 2.6.1
125
+ type: :development
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 2.6.1
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 2.6.1
135
+ - !ruby/object:Gem::Dependency
136
+ name: guard-minitest
137
+ requirement: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - "~>"
140
+ - !ruby/object:Gem::Version
141
+ version: 2.3.2
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: 2.3.2
145
+ type: :development
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: 2.3.2
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: 2.3.2
155
+ - !ruby/object:Gem::Dependency
156
+ name: grape
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - "~>"
160
+ - !ruby/object:Gem::Version
161
+ version: 0.9.0
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: 0.9.0
165
+ type: :development
166
+ prerelease: false
167
+ version_requirements: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: 0.9.0
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: 0.9.0
175
+ description: Makes Her aware of APIs that return pagination headers.
176
+ email:
177
+ - daniel.blancorojas@gmail.com
178
+ executables: []
179
+ extensions: []
180
+ extra_rdoc_files: []
181
+ files:
182
+ - ".gitignore"
183
+ - Gemfile
184
+ - Guardfile
185
+ - LICENSE
186
+ - LICENSE.txt
187
+ - README.md
188
+ - Rakefile
189
+ - her-kaminari.gemspec
190
+ - lib/her/kaminari.rb
191
+ - lib/her/kaminari/collection.rb
192
+ - lib/her/kaminari/header_parser.rb
193
+ - lib/her/kaminari/version.rb
194
+ - test/lib/her/kaminari/collection_test.rb
195
+ - test/lib/her/kaminari/header_parser_test.rb
196
+ - test/lib/her/kaminari_test.rb
197
+ - test/support/.keep
198
+ - test/support/her_api.rb
199
+ - test/test_helper.rb
200
+ homepage: https://github.com/DanielBlanco/her-kaminari
201
+ licenses:
202
+ - MIT
203
+ metadata: {}
204
+ post_install_message:
205
+ rdoc_options: []
206
+ require_paths:
207
+ - lib
208
+ required_ruby_version: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: '0'
213
+ required_rubygems_version: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: '0'
218
+ requirements: []
219
+ rubyforge_project:
220
+ rubygems_version: 2.2.2
221
+ signing_key:
222
+ specification_version: 4
223
+ summary: Kaminari pagination for Her models.
224
+ test_files:
225
+ - test/lib/her/kaminari/collection_test.rb
226
+ - test/lib/her/kaminari/header_parser_test.rb
227
+ - test/lib/her/kaminari_test.rb
228
+ - test/support/.keep
229
+ - test/support/her_api.rb
230
+ - test/test_helper.rb