geared_pagination 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 750005ac1e001628bcb41a5fc7ff8c3816882df33785ff6038833d17ea9ea895
4
- data.tar.gz: 983b5d46b9cb9174b1ced7931a0015b2d202f7f3bd578d6fd0172878ba57947a
3
+ metadata.gz: dcd6217ccba91dc6481791650dd5906e390d45acf4fb71caf0c34d76eedaea83
4
+ data.tar.gz: 68a65630d9dc8cd95c236dcbf313aa2c4076c09a06ee0ccb9175a175857072f6
5
5
  SHA512:
6
- metadata.gz: e66422eaa4008173bef8c798283f9b56a73853e88453b7d12fee2a6f5e0d0c88af0ab145fd83972bd41af017cafe35c4e306750aa75cb556ffd2bb51c465f208
7
- data.tar.gz: 5e76d1a248cf859854b3c53eaaadcba3d14f11e4dd14dafbbca2cef30eeb1f6d791b35db386a9131eb2b9f0e4671921dcbd6171005da0f4d9dca90e0bbe9b453
6
+ metadata.gz: 86686dda8a790f044b647946737c6ebb238a370f77ea0aea7f3c22d3335779b9ce6ee1bd89c43a62d66d3e6299769a6d70ae48f86fbce1df09df8106e113069f
7
+ data.tar.gz: 9d0a5ea64551d9978cb366411e8b1141ae09deab60e6f8ff24b4485122a155e17156060b73bd76802a37f3b124dd79c7d51c2ed83b308d4a9841a7923680b295
@@ -2,22 +2,19 @@ name: CI
2
2
  on: [push, pull_request]
3
3
  jobs:
4
4
  tests:
5
+ strategy:
6
+ fail-fast: false
7
+ matrix:
8
+ ruby: ["2.7", "3.0", "3.1", "3.2"]
5
9
  runs-on: ubuntu-latest
6
10
 
7
11
  steps:
8
- - uses: actions/checkout@v1
9
-
10
- - name: Set up Ruby 2.6
11
- uses: actions/setup-ruby@v1
12
- with:
13
- ruby-version: 2.6.x
14
-
15
- - name: Cache gem dependencies
16
- uses: actions/cache@v1
12
+ - uses: actions/checkout@v4
13
+ - name: Set up Ruby 2.7
14
+ uses: ruby/setup-ruby@v1
17
15
  with:
18
- path: vendor/bundle
19
- key: ${{ runner.os }}-bundler-${{ hashFiles('**/Gemfile.lock') }}
20
- restore-keys: ${{ runner.os }}-bundler-
16
+ ruby-version: ${{ matrix.ruby }}
17
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
21
18
 
22
19
  - name: Install system dependencies
23
20
  run: sudo apt-get update && sudo apt-get install libsqlite3-dev
data/Gemfile.lock CHANGED
@@ -1,149 +1,166 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- geared_pagination (1.1.1)
4
+ geared_pagination (1.2.0)
5
5
  activesupport (>= 5.0)
6
6
  addressable (>= 2.5.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actioncable (6.0.3)
12
- actionpack (= 6.0.3)
11
+ actioncable (7.0.3)
12
+ actionpack (= 7.0.3)
13
+ activesupport (= 7.0.3)
13
14
  nio4r (~> 2.0)
14
15
  websocket-driver (>= 0.6.1)
15
- actionmailbox (6.0.3)
16
- actionpack (= 6.0.3)
17
- activejob (= 6.0.3)
18
- activerecord (= 6.0.3)
19
- activestorage (= 6.0.3)
20
- activesupport (= 6.0.3)
16
+ actionmailbox (7.0.3)
17
+ actionpack (= 7.0.3)
18
+ activejob (= 7.0.3)
19
+ activerecord (= 7.0.3)
20
+ activestorage (= 7.0.3)
21
+ activesupport (= 7.0.3)
21
22
  mail (>= 2.7.1)
22
- actionmailer (6.0.3)
23
- actionpack (= 6.0.3)
24
- actionview (= 6.0.3)
25
- activejob (= 6.0.3)
23
+ net-imap
24
+ net-pop
25
+ net-smtp
26
+ actionmailer (7.0.3)
27
+ actionpack (= 7.0.3)
28
+ actionview (= 7.0.3)
29
+ activejob (= 7.0.3)
30
+ activesupport (= 7.0.3)
26
31
  mail (~> 2.5, >= 2.5.4)
32
+ net-imap
33
+ net-pop
34
+ net-smtp
27
35
  rails-dom-testing (~> 2.0)
28
- actionpack (6.0.3)
29
- actionview (= 6.0.3)
30
- activesupport (= 6.0.3)
31
- rack (~> 2.0, >= 2.0.8)
36
+ actionpack (7.0.3)
37
+ actionview (= 7.0.3)
38
+ activesupport (= 7.0.3)
39
+ rack (~> 2.0, >= 2.2.0)
32
40
  rack-test (>= 0.6.3)
33
41
  rails-dom-testing (~> 2.0)
34
42
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
35
- actiontext (6.0.3)
36
- actionpack (= 6.0.3)
37
- activerecord (= 6.0.3)
38
- activestorage (= 6.0.3)
39
- activesupport (= 6.0.3)
43
+ actiontext (7.0.3)
44
+ actionpack (= 7.0.3)
45
+ activerecord (= 7.0.3)
46
+ activestorage (= 7.0.3)
47
+ activesupport (= 7.0.3)
48
+ globalid (>= 0.6.0)
40
49
  nokogiri (>= 1.8.5)
41
- actionview (6.0.3)
42
- activesupport (= 6.0.3)
50
+ actionview (7.0.3)
51
+ activesupport (= 7.0.3)
43
52
  builder (~> 3.1)
44
53
  erubi (~> 1.4)
45
54
  rails-dom-testing (~> 2.0)
46
55
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
47
- activejob (6.0.3)
48
- activesupport (= 6.0.3)
56
+ activejob (7.0.3)
57
+ activesupport (= 7.0.3)
49
58
  globalid (>= 0.3.6)
50
- activemodel (6.0.3)
51
- activesupport (= 6.0.3)
52
- activerecord (6.0.3)
53
- activemodel (= 6.0.3)
54
- activesupport (= 6.0.3)
55
- activestorage (6.0.3)
56
- actionpack (= 6.0.3)
57
- activejob (= 6.0.3)
58
- activerecord (= 6.0.3)
59
- marcel (~> 0.3.1)
60
- activesupport (6.0.3)
59
+ activemodel (7.0.3)
60
+ activesupport (= 7.0.3)
61
+ activerecord (7.0.3)
62
+ activemodel (= 7.0.3)
63
+ activesupport (= 7.0.3)
64
+ activestorage (7.0.3)
65
+ actionpack (= 7.0.3)
66
+ activejob (= 7.0.3)
67
+ activerecord (= 7.0.3)
68
+ activesupport (= 7.0.3)
69
+ marcel (~> 1.0)
70
+ mini_mime (>= 1.1.0)
71
+ activesupport (7.0.3)
61
72
  concurrent-ruby (~> 1.0, >= 1.0.2)
62
- i18n (>= 0.7, < 2)
63
- minitest (~> 5.1)
64
- tzinfo (~> 1.1)
65
- zeitwerk (~> 2.2, >= 2.2.2)
66
- addressable (2.7.0)
67
- public_suffix (>= 2.0.2, < 5.0)
73
+ i18n (>= 1.6, < 2)
74
+ minitest (>= 5.1)
75
+ tzinfo (~> 2.0)
76
+ addressable (2.8.5)
77
+ public_suffix (>= 2.0.2, < 6.0)
68
78
  builder (3.2.4)
69
- byebug (10.0.2)
70
- concurrent-ruby (1.1.6)
79
+ byebug (11.1.3)
80
+ concurrent-ruby (1.1.10)
71
81
  crass (1.0.6)
72
- erubi (1.9.0)
73
- globalid (0.4.2)
74
- activesupport (>= 4.2.0)
75
- i18n (1.8.2)
82
+ digest (3.1.0)
83
+ erubi (1.10.0)
84
+ globalid (1.0.0)
85
+ activesupport (>= 5.0)
86
+ i18n (1.10.0)
76
87
  concurrent-ruby (~> 1.0)
77
- loofah (2.5.0)
88
+ loofah (2.18.0)
78
89
  crass (~> 1.0.2)
79
90
  nokogiri (>= 1.5.9)
80
91
  mail (2.7.1)
81
92
  mini_mime (>= 0.1.1)
82
- marcel (0.3.3)
83
- mimemagic (~> 0.3.2)
93
+ marcel (1.0.2)
84
94
  method_source (1.0.0)
85
- mimemagic (0.3.10)
86
- nokogiri (~> 1)
87
- rake
88
- mini_mime (1.0.2)
89
- mini_portile2 (2.4.0)
90
- minitest (5.14.0)
91
- nio4r (2.5.2)
92
- nokogiri (1.10.9)
93
- mini_portile2 (~> 2.4.0)
94
- public_suffix (4.0.6)
95
- rack (2.2.2)
95
+ mini_mime (1.1.2)
96
+ mini_portile2 (2.8.0)
97
+ minitest (5.15.0)
98
+ net-imap (0.2.3)
99
+ digest
100
+ net-protocol
101
+ strscan
102
+ net-pop (0.1.1)
103
+ digest
104
+ net-protocol
105
+ timeout
106
+ net-protocol (0.1.3)
107
+ timeout
108
+ net-smtp (0.3.1)
109
+ digest
110
+ net-protocol
111
+ timeout
112
+ nio4r (2.5.8)
113
+ nokogiri (1.13.6)
114
+ mini_portile2 (~> 2.8.0)
115
+ racc (~> 1.4)
116
+ public_suffix (5.0.4)
117
+ racc (1.6.0)
118
+ rack (2.2.3.1)
96
119
  rack-test (1.1.0)
97
120
  rack (>= 1.0, < 3)
98
- rails (6.0.3)
99
- actioncable (= 6.0.3)
100
- actionmailbox (= 6.0.3)
101
- actionmailer (= 6.0.3)
102
- actionpack (= 6.0.3)
103
- actiontext (= 6.0.3)
104
- actionview (= 6.0.3)
105
- activejob (= 6.0.3)
106
- activemodel (= 6.0.3)
107
- activerecord (= 6.0.3)
108
- activestorage (= 6.0.3)
109
- activesupport (= 6.0.3)
110
- bundler (>= 1.3.0)
111
- railties (= 6.0.3)
112
- sprockets-rails (>= 2.0.0)
121
+ rails (7.0.3)
122
+ actioncable (= 7.0.3)
123
+ actionmailbox (= 7.0.3)
124
+ actionmailer (= 7.0.3)
125
+ actionpack (= 7.0.3)
126
+ actiontext (= 7.0.3)
127
+ actionview (= 7.0.3)
128
+ activejob (= 7.0.3)
129
+ activemodel (= 7.0.3)
130
+ activerecord (= 7.0.3)
131
+ activestorage (= 7.0.3)
132
+ activesupport (= 7.0.3)
133
+ bundler (>= 1.15.0)
134
+ railties (= 7.0.3)
113
135
  rails-dom-testing (2.0.3)
114
136
  activesupport (>= 4.2.0)
115
137
  nokogiri (>= 1.6)
116
- rails-html-sanitizer (1.3.0)
138
+ rails-html-sanitizer (1.4.3)
117
139
  loofah (~> 2.3)
118
- railties (6.0.3)
119
- actionpack (= 6.0.3)
120
- activesupport (= 6.0.3)
140
+ railties (7.0.3)
141
+ actionpack (= 7.0.3)
142
+ activesupport (= 7.0.3)
121
143
  method_source
122
- rake (>= 0.8.7)
123
- thor (>= 0.20.3, < 2.0)
124
- rake (13.0.1)
125
- sprockets (4.0.0)
126
- concurrent-ruby (~> 1.0)
127
- rack (> 1, < 3)
128
- sprockets-rails (3.2.1)
129
- actionpack (>= 4.0)
130
- activesupport (>= 4.0)
131
- sprockets (>= 3.0.0)
144
+ rake (>= 12.2)
145
+ thor (~> 1.0)
146
+ zeitwerk (~> 2.5)
147
+ rake (13.0.6)
132
148
  sqlite3 (1.4.2)
133
- thor (1.0.1)
134
- thread_safe (0.3.6)
135
- tzinfo (1.2.7)
136
- thread_safe (~> 0.1)
137
- websocket-driver (0.7.1)
149
+ strscan (3.0.3)
150
+ thor (1.2.1)
151
+ timeout (0.3.0)
152
+ tzinfo (2.0.4)
153
+ concurrent-ruby (~> 1.0)
154
+ websocket-driver (0.7.5)
138
155
  websocket-extensions (>= 0.1.0)
139
- websocket-extensions (0.1.4)
140
- zeitwerk (2.3.0)
156
+ websocket-extensions (0.1.5)
157
+ zeitwerk (2.5.4)
141
158
 
142
159
  PLATFORMS
143
160
  ruby
144
161
 
145
162
  DEPENDENCIES
146
- bundler (~> 1.12)
163
+ bundler
147
164
  byebug
148
165
  geared_pagination!
149
166
  rails (>= 5.0)
@@ -151,4 +168,4 @@ DEPENDENCIES
151
168
  sqlite3
152
169
 
153
170
  BUNDLED WITH
154
- 1.17.2
171
+ 2.3.15
data/bin/release ADDED
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env bash
2
+
3
+ VERSION=$1
4
+
5
+ printf "module GearedPagination\n VERSION = \"$VERSION\"\nend\n" > ./lib/geared_pagination/version.rb
6
+ bundle
7
+ git add Gemfile.lock lib/geared_pagination/version.rb
8
+ git commit -m "Bump version for $VERSION"
9
+ git push
10
+ git tag v$VERSION
11
+ git push --tags
12
+ gem build geared_pagination.gemspec
13
+ gem push "geared_pagination-$VERSION.gem" --host https://rubygems.org
data/bin/test ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path("../test", __dir__)
3
+
4
+ puts "Installing Ruby dependencies"
5
+ `bundle install`
6
+
7
+ require "bundler/setup"
8
+ require "rails/plugin/test"
@@ -1,6 +1,8 @@
1
+ require_relative "lib/geared_pagination/version"
2
+
1
3
  Gem::Specification.new do |s|
2
4
  s.name = 'geared_pagination'
3
- s.version = '1.1.1'
5
+ s.version = GearedPagination::VERSION
4
6
  s.authors = 'David Heinemeier Hansson'
5
7
  s.email = 'david@basecamp.com'
6
8
  s.summary = 'Paginate Active Record sets at variable speeds'
@@ -12,7 +14,7 @@ Gem::Specification.new do |s|
12
14
  s.add_dependency 'activesupport', '>= 5.0'
13
15
  s.add_dependency 'addressable', '>= 2.5.0'
14
16
 
15
- s.add_development_dependency 'bundler', '~> 1.12'
17
+ s.add_development_dependency 'bundler'
16
18
 
17
19
  s.files = `git ls-files`.split("\n")
18
20
  s.test_files = `git ls-files -- test/*`.split("\n")
@@ -7,4 +7,10 @@ class GearedPagination::Engine < ::Rails::Engine
7
7
  ActionController::Base.send :include, GearedPagination::Controller
8
8
  end
9
9
  end
10
+
11
+ if GearedPagination.rails_7_1?
12
+ initializer "geared_pagination.deprecator" do |app|
13
+ app.deprecators[:geared_pagination] = GearedPagination.deprecator
14
+ end
15
+ end
10
16
  end
@@ -48,7 +48,11 @@ module GearedPagination
48
48
  end
49
49
 
50
50
  alias_method :next_number, :next_param
51
- deprecate next_number: "use #next_param instead"
51
+ if GearedPagination.rails_7_1?
52
+ deprecate next_number: "use #next_param instead", deprecator: GearedPagination.deprecator
53
+ else
54
+ deprecate next_number: "use #next_param instead"
55
+ end
52
56
 
53
57
 
54
58
  def cache_key
@@ -12,10 +12,13 @@ module GearedPagination
12
12
  end
13
13
 
14
14
  def from(scope)
15
- if scope.order_values.none? && scope.limit_value.nil?
16
- selection_from(scope).order(orderings).limit(limit)
17
- else
18
- raise ArgumentError, "Can't paginate relation with ORDER BY or LIMIT clauses (got #{scope.to_sql})"
15
+ @froms ||= {}
16
+ @froms[scope] ||= begin
17
+ if scope.order_values.none? && scope.limit_value.nil?
18
+ selection_from(scope).order(orderings).limit(limit)
19
+ else
20
+ raise ArgumentError, "Can't paginate relation with ORDER BY or LIMIT clauses (got #{scope.to_sql})"
21
+ end
19
22
  end
20
23
  end
21
24
 
@@ -32,7 +32,7 @@ module GearedPagination
32
32
  end
33
33
 
34
34
  def records_count
35
- @records_count ||= records.unscope(:limit).unscope(:offset).count
35
+ @records_count ||= records.unscope(:limit).unscope(:offset).unscope(:select).count
36
36
  end
37
37
 
38
38
  private
@@ -0,0 +1,3 @@
1
+ module GearedPagination
2
+ VERSION = "1.2.0"
3
+ end
@@ -1,2 +1,15 @@
1
+ require 'active_support/deprecation'
2
+ require_relative "geared_pagination/version"
3
+
4
+ module GearedPagination
5
+ def self.rails_7_1?
6
+ Rails.version >= "7.1.0" rescue false
7
+ end
8
+
9
+ def self.deprecator
10
+ @deprecator ||= ActiveSupport::Deprecation.new(VERSION, "GearedPagination")
11
+ end
12
+ end
13
+
1
14
  require 'geared_pagination/recordset'
2
15
  require 'geared_pagination/engine' if defined?(Rails)
@@ -44,14 +44,6 @@ Rails.application.configure do
44
44
  # Highlight code that triggered database queries in logs.
45
45
  config.active_record.verbose_query_logs = true
46
46
 
47
- # Debug mode disables concatenation and preprocessing of assets.
48
- # This option may cause significant delays in view rendering with a large
49
- # number of complex assets.
50
- config.assets.debug = true
51
-
52
- # Suppress logger output for asset requests.
53
- config.assets.quiet = true
54
-
55
47
  # Raises error for missing translations
56
48
  # config.action_view.raise_on_missing_translations = true
57
49
 
@@ -1,13 +1,5 @@
1
1
  # Be sure to restart your server when you modify this file.
2
2
 
3
- # Version of your assets, change this if you want to expire all your assets.
4
- Rails.application.config.assets.version = '1.0'
5
-
6
- # Add additional assets to the asset load path.
7
- # Rails.application.config.assets.paths << Emoji.images_path
8
- # Add Yarn node_modules folder to the asset load path.
9
- Rails.application.config.assets.paths << Rails.root.join('node_modules')
10
-
11
3
  # Precompile additional assets.
12
4
  # application.js, application.css, and all non-JS/CSS in the app/assets
13
5
  # folder are already added.
@@ -70,4 +70,10 @@ class GearedPagination::RecordsetTest < ActiveSupport::TestCase
70
70
  test "records count" do
71
71
  assert_equal Recording.all.count, GearedPagination::Recordset.new(Recording.all, per_page: [ 10, 15, 20 ]).records_count
72
72
  end
73
+
74
+ test "unscope select for count" do
75
+ select_scoped_records = Recording.all.select(:id, :number)
76
+ recordset = GearedPagination::Recordset.new(select_scoped_records, per_page: [ 10, 15, 20 ])
77
+ assert_equal Recording.all.count, recordset.records_count
78
+ end
73
79
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geared_pagination
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-04 00:00:00.000000000 Z
11
+ date: 2023-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -42,17 +42,17 @@ dependencies:
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '1.12'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '1.12'
55
- description:
54
+ version: '0'
55
+ description:
56
56
  email: david@basecamp.com
57
57
  executables: []
58
58
  extensions: []
@@ -66,6 +66,8 @@ files:
66
66
  - README.md
67
67
  - Rakefile
68
68
  - bin/rails
69
+ - bin/release
70
+ - bin/test
69
71
  - geared_pagination.gemspec
70
72
  - lib/geared_pagination.rb
71
73
  - lib/geared_pagination/controller.rb
@@ -79,6 +81,7 @@ files:
79
81
  - lib/geared_pagination/portions/portion_at_offset.rb
80
82
  - lib/geared_pagination/ratios.rb
81
83
  - lib/geared_pagination/recordset.rb
84
+ - lib/geared_pagination/version.rb
82
85
  - test/controller_test.rb
83
86
  - test/cursor_test.rb
84
87
  - test/dummy/Rakefile
@@ -162,7 +165,7 @@ homepage: https://github.com/basecamp/geared_pagination
162
165
  licenses:
163
166
  - MIT
164
167
  metadata: {}
165
- post_install_message:
168
+ post_install_message:
166
169
  rdoc_options: []
167
170
  require_paths:
168
171
  - lib
@@ -177,8 +180,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
180
  - !ruby/object:Gem::Version
178
181
  version: '0'
179
182
  requirements: []
180
- rubygems_version: 3.1.4
181
- signing_key:
183
+ rubygems_version: 3.4.20
184
+ signing_key:
182
185
  specification_version: 4
183
186
  summary: Paginate Active Record sets at variable speeds
184
187
  test_files: