order_query 0.3.2 → 0.3.3

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
  SHA1:
3
- metadata.gz: 6e69a0283a9dcc95fe70d2fd18c02f5aa62120d2
4
- data.tar.gz: d1d0a0975074175ff4eb15d7fa5efdd20fc91c3f
3
+ metadata.gz: 2139f5b59c57d0163c85a86b23b79a3e6fd00a28
4
+ data.tar.gz: e879b1b335c61133b122c014e49b01acb83c907d
5
5
  SHA512:
6
- metadata.gz: 0a5d6a00cd9096587584e9c32a1daf05f26577175d9e0bf6a783b8bc189a710482143b18166b82620b3ef315928c51ed837f6776e719ff53c53c644cfc278fa6
7
- data.tar.gz: 6ae64249791c2c8ac500b10b3a50c9ed6cf439056301ca1d361f1d8f5559fa1180bcdf72113698922a08ad6fd85f5e3adcd3c25c5b9e9f50776225ce51c616f2
6
+ metadata.gz: a8c33923361af77ea70eaf89eed9486122ff82e70ebcb8dae13d8ee273155e0075a0207e59a7dc276a9d335548830b6a768db1575cc657e2d64c3ad58cbade63
7
+ data.tar.gz: a42483806ef779802cf97467ebd53fa95e2e97639ce709e51564320ae184e09274a6aaa001f5c7a4414897e4c6918816d5b680466fd6b784c2384bc288167272
data/Gemfile CHANGED
@@ -2,22 +2,4 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- group :test, :development do
6
- gem 'codeclimate-test-reporter', group: :test, require: nil
7
- gem 'byebug', platform: :mri_21, require: false
8
- end
9
-
10
- platform :mri, :rbx do
11
- # version locked because of rbx issue, see https://github.com/travis-ci/travis-ci/issues/2006#issuecomment-36275141
12
- gem 'sqlite3', '=1.3.8'
13
- end
14
-
15
- platform :jruby do
16
- gem 'activerecord-jdbcsqlite3-adapter'
17
- end
18
-
19
- platform :rbx do
20
- gem 'rubysl-singleton', '~> 2.0'
21
- gem 'rubysl-optparse', '~> 2.0'
22
- gem 'rubysl-ostruct', '~> 2.0'
23
- end
5
+ eval_gemfile './shared.gemfile'
data/README.md CHANGED
@@ -4,44 +4,42 @@
4
4
  <img src="http://use-the-index-luke.com/img/no-offset.q200.png" alt="100% offset-free" align="right" width="106" height="106">
5
5
  </a>
6
6
 
7
- This gem finds the next or previous record(s) relative to the current one efficiently. It is also useful for implementing infinite scroll.
8
- It uses [keyset pagination](http://use-the-index-luke.com/no-offset) to achieve this.
7
+ This gem finds the next or previous record(s) relative to the current one efficiently using [keyset pagination](http://use-the-index-luke.com/no-offset), e.g. for navigation or infinite scroll.
9
8
 
10
9
  ## Installation
11
10
 
12
11
  Add to Gemfile:
13
12
 
14
13
  ```ruby
15
- gem 'order_query', '~> 0.3.2'
14
+ gem 'order_query', '~> 0.3.3'
16
15
  ```
17
16
 
18
17
  ## Usage
19
18
 
20
- Define named order columns with `order_query`:
19
+ Define a named list of attributes to order by with `order_query(name, *order)`:
21
20
 
22
21
  ```ruby
23
22
  class Post < ActiveRecord::Base
24
23
  include OrderQuery
25
24
  order_query :order_home,
26
25
  [:pinned, [true, false]],
27
- [:published_at, :desc],
28
- [:id, :desc]
26
+ [:published_at, :desc]
29
27
  end
30
28
  ```
31
29
 
32
- Order query accepts a list of order columns as varargs or one array, each one specified as:
33
-
34
- ```ruby
35
- [<attribute name>, (attribute values in order), (:asc or :desc), (options hash)]
36
- ```
30
+ Each attributes is specified as:
37
31
 
38
- Available options:
32
+ 1. Attribute name.
33
+ 2. Optionally, values to order by, such as `%w(high medium low)` or `[true, false]`.
34
+ 3. Sort direction, `:asc` or `:desc`. Default: `:asc`; `:desc` when values to order by are specified.
35
+ 4. Options:
39
36
 
40
37
  | option | description |
41
38
  |------------|----------------------------------------------------------------------------|
42
39
  | unique | Unique attribute. Default: `true` for primary key, `false` otherwise. |
43
- | sql | Customize attribute value SQL |
40
+ | sql | Customize column SQL. |
44
41
 
42
+ If no unique column is specified, `[primary_key, :asc]` is used. Unique column must be last.
45
43
 
46
44
  ### Scopes for `ORDER BY`
47
45
 
@@ -68,7 +66,7 @@ p.next #=> #<Post>
68
66
  p.position #=> 5
69
67
  ```
70
68
 
71
- Looping to the first / last record is enabled by default. Pass `false` to disable:
69
+ Looping to the first / last record is enabled for `next` / `previous` by default. Pass `false` to disable:
72
70
 
73
71
  ```ruby
74
72
  p = Post.order_home_at(Post.order_home.first)
@@ -88,7 +86,7 @@ post.order_home(posts) #=> #<OrderQuery::Point>
88
86
 
89
87
  ### Dynamic columns
90
88
 
91
- Query with dynamic order columns using the `seek(*spec)` class method:
89
+ Query with dynamic order columns using the `seek(*order)` class method:
92
90
 
93
91
  ```ruby
94
92
  space = Post.visible.seek([:id, :desc]) #=> #<OrderQuery::Space>
@@ -104,7 +102,13 @@ space.last #=> scope_reverse.first
104
102
  space.at(Post.first) #=> #<OrderQuery::Point>
105
103
  ```
106
104
 
107
- Alternatively, get an `OrderQuery::Point` using the `seek(scope, *spec)` instance method:
105
+ `OrderQuery::Space` is also available for defined order_queries:
106
+
107
+ ```ruby
108
+ Post.visible.order_home_space #=> #<OrderQuery::Space>
109
+ ```
110
+
111
+ Alternatively, get an `OrderQuery::Point` using the `seek(scope, *order)` instance method:
108
112
 
109
113
  ```ruby
110
114
  Post.find(42).seek(Post.visible, [:id, :desc]) #=> #<OrderQuery::Point>
@@ -112,7 +116,7 @@ Post.find(42).seek(Post.visible, [:id, :desc]) #=> #<OrderQuery::Point>
112
116
  Post.find(42).seek([:id, :desc]) #=> #<OrderQuery::Point>
113
117
  ```
114
118
 
115
- #### Advanced options example
119
+ ### Advanced example
116
120
 
117
121
  ```ruby
118
122
  class Post < ActiveRecord::Base
data/Rakefile CHANGED
@@ -8,3 +8,32 @@ require 'rspec/core/rake_task'
8
8
  RSpec::Core::RakeTask.new(:spec)
9
9
 
10
10
  task default: :spec
11
+
12
+ desc 'Test all Gemfiles from spec/*.gemfile'
13
+ task :test_all_gemfiles do
14
+ require 'pty'
15
+ require 'shellwords'
16
+ cmd = 'bundle --quiet && bundle exec rake --trace'
17
+ statuses = Dir.glob('./spec/gemfiles/*{[!.lock]}').map do |gemfile|
18
+ env = {'BUNDLE_GEMFILE' => gemfile}
19
+ cmd_with_env = " (#{env.map { |k, v| "export #{k}=#{Shellwords.escape v}" } * ' '}; #{cmd})"
20
+ $stderr.puts "Testing\n#{cmd_with_env}"
21
+ PTY.spawn(env, cmd) do |r, _w, pid|
22
+ begin
23
+ r.each_line { |l| puts l }
24
+ rescue Errno::EIO
25
+ # Errno:EIO error means that the process has finished giving output.
26
+ ensure
27
+ ::Process.wait pid
28
+ end
29
+ end
30
+ [$? && $?.exitstatus == 0, cmd_with_env]
31
+ end
32
+ failed_cmds = statuses.reject(&:first).map { |(_status, cmd_with_env)| cmd_with_env }
33
+ if failed_cmds.empty?
34
+ $stderr.puts '✓ Tests pass with all gemfiles'
35
+ else
36
+ $stderr.puts "❌ FAILING (#{failed_cmds.size} / #{statuses.size})\n#{failed_cmds * "\n"}"
37
+ exit 1
38
+ end
39
+ end
data/lib/order_query.rb CHANGED
@@ -59,22 +59,17 @@ module OrderQuery
59
59
  # .order_home(scope)
60
60
  # #<OrderQuery::Point...>
61
61
  def order_query(name, *spec)
62
- space_method = :"#{name}_space"
63
- define_singleton_method space_method, -> {
64
- seek(*spec)
65
- }
66
- scope name, -> {
67
- send(space_method).scope
68
- }
69
- scope "#{name}_reverse", -> {
70
- send(space_method).scope_reverse
71
- }
72
- define_singleton_method "#{name}_at", ->(record) {
73
- send(space_method).at(record)
74
- }
75
- define_method(name) { |scope = nil|
76
- (scope || self.class).send(space_method).at(self)
77
- }
62
+ define_singleton_method(:"#{name}_space") { seek(*spec) }
63
+ class_eval <<-RUBY, __FILE__, __LINE__
64
+ scope :#{name}, -> { #{name}_space.scope }
65
+ scope :#{name}_reverse, -> { #{name}_space.scope_reverse }
66
+ def self.#{name}_at(record)
67
+ #{name}_space.at(record)
68
+ end
69
+ def #{name}(scope = self.class)
70
+ scope.#{name}_space.at(self)
71
+ end
72
+ RUBY
78
73
  end
79
74
  end
80
75
 
@@ -61,7 +61,7 @@ module OrderQuery
61
61
  (@order_enum.inspect if order_enum),
62
62
  ('unique' if @unique),
63
63
  (column_name if options[:sql]),
64
- {desc: '▼', asc: '▲'}[@order]
64
+ @direction
65
65
  ].compact
66
66
  "(#{parts.join(' ')})"
67
67
  end
@@ -3,8 +3,7 @@ module OrderQuery
3
3
  module Direction
4
4
  extend self
5
5
 
6
- DIRECTIONS = [:asc, :desc].freeze
7
- DIRECTIONS_S = DIRECTIONS.map { |d| d.to_s.freeze }.freeze
6
+ DIRECTIONS = [:asc, :desc].freeze
8
7
 
9
8
  def all
10
9
  DIRECTIONS
@@ -20,11 +19,8 @@ module OrderQuery
20
19
  # @raise [ArgumentError]
21
20
  # @return [:asc, :desc]
22
21
  def parse!(direction)
23
- if direction.is_a?(Symbol)
24
- direction if DIRECTIONS.include?(direction)
25
- else
26
- direction = direction.to_s.downcase
27
- direction.to_sym if DIRECTIONS_S.include?(direction)
22
+ if all.include?(direction)
23
+ direction
28
24
  end or
29
25
  raise ArgumentError.new("sort direction must be in #{all.map(&:inspect).join(', ')}, is #{direction.inspect}")
30
26
  end
@@ -26,7 +26,7 @@ module OrderQuery
26
26
  unless_record_eq before.first || (last if loop)
27
27
  end
28
28
 
29
- # @return [Integer]
29
+ # @return [Integer] counting from 1
30
30
  def position
31
31
  space.count - after.count
32
32
  end
@@ -50,11 +50,7 @@ module OrderQuery
50
50
  else
51
51
  space.scope_reverse
52
52
  end
53
- if query.present?
54
- scope.where(query, *query_args)
55
- else
56
- scope
57
- end
53
+ scope.where(query, *query_args)
58
54
  end
59
55
 
60
56
  def value(cond)
@@ -5,6 +5,7 @@ module OrderQuery
5
5
  class Space
6
6
  # @return [Array<OrderQuery::Column>]
7
7
  attr_reader :columns
8
+ delegate :count, :empty?, to: :@base_scope
8
9
 
9
10
  # @param [ActiveRecord::Relation] base_scope
10
11
  # @param [Array<Array<Symbol,String>>, OrderQuery::Spec] order_spec
@@ -44,8 +45,6 @@ module OrderQuery
44
45
  scope_reverse.first
45
46
  end
46
47
 
47
- delegate :count, :empty?, to: :@base_scope
48
-
49
48
  def inspect
50
49
  "#<OrderQuery::Space @columns=#{@columns.inspect} @base_scope=#{@base_scope.inspect}>"
51
50
  end
@@ -1,3 +1,3 @@
1
1
  module OrderQuery
2
- VERSION = '0.3.2'
2
+ VERSION = '0.3.3'
3
3
  end
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '../../'
4
+
5
+ gem 'activerecord', '~> 4.0'
6
+ gem 'activesupport', '~> 4.0'
7
+
8
+ eval_gemfile './shared.gemfile'
9
+
@@ -0,0 +1,73 @@
1
+ PATH
2
+ remote: ../../
3
+ specs:
4
+ order_query (0.3.2)
5
+ activerecord (>= 4.0, < 6.0)
6
+ activesupport (>= 4.0, < 6.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ activemodel (4.2.5)
12
+ activesupport (= 4.2.5)
13
+ builder (~> 3.1)
14
+ activerecord (4.2.5)
15
+ activemodel (= 4.2.5)
16
+ activesupport (= 4.2.5)
17
+ arel (~> 6.0)
18
+ activesupport (4.2.5)
19
+ i18n (~> 0.7)
20
+ json (~> 1.7, >= 1.7.7)
21
+ minitest (~> 5.1)
22
+ thread_safe (~> 0.3, >= 0.3.4)
23
+ tzinfo (~> 1.1)
24
+ arel (6.0.3)
25
+ builder (3.2.2)
26
+ byebug (8.2.1)
27
+ codeclimate-test-reporter (0.4.8)
28
+ simplecov (>= 0.7.1, < 1.0.0)
29
+ diff-lcs (1.2.5)
30
+ docile (1.1.5)
31
+ i18n (0.7.0)
32
+ json (1.8.3)
33
+ minitest (5.8.3)
34
+ rake (10.4.2)
35
+ rspec (3.4.0)
36
+ rspec-core (~> 3.4.0)
37
+ rspec-expectations (~> 3.4.0)
38
+ rspec-mocks (~> 3.4.0)
39
+ rspec-core (3.4.1)
40
+ rspec-support (~> 3.4.0)
41
+ rspec-expectations (3.4.0)
42
+ diff-lcs (>= 1.2.0, < 2.0)
43
+ rspec-support (~> 3.4.0)
44
+ rspec-mocks (3.4.0)
45
+ diff-lcs (>= 1.2.0, < 2.0)
46
+ rspec-support (~> 3.4.0)
47
+ rspec-support (3.4.1)
48
+ simplecov (0.11.1)
49
+ docile (~> 1.1.0)
50
+ json (~> 1.8)
51
+ simplecov-html (~> 0.10.0)
52
+ simplecov-html (0.10.0)
53
+ sqlite3 (1.3.11)
54
+ thread_safe (0.3.5)
55
+ tzinfo (1.2.2)
56
+ thread_safe (~> 0.1)
57
+
58
+ PLATFORMS
59
+ ruby
60
+
61
+ DEPENDENCIES
62
+ activerecord (~> 4.0)
63
+ activerecord-jdbcsqlite3-adapter
64
+ activesupport (~> 4.0)
65
+ byebug
66
+ codeclimate-test-reporter
67
+ order_query!
68
+ rake (~> 10.2)
69
+ rspec (~> 3.4)
70
+ sqlite3 (>= 1.3.11)
71
+
72
+ BUNDLED WITH
73
+ 1.11.2
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '../../'
4
+
5
+ gem 'activerecord', '= 5.0.0.beta1'
6
+ gem 'activesupport', '= 5.0.0.beta1'
7
+
8
+ eval_gemfile './shared.gemfile'
@@ -0,0 +1,76 @@
1
+ PATH
2
+ remote: ../../
3
+ specs:
4
+ order_query (0.3.2)
5
+ activerecord (>= 4.0, < 6.0)
6
+ activesupport (>= 4.0, < 6.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ activemodel (5.0.0.beta1)
12
+ activesupport (= 5.0.0.beta1)
13
+ builder (~> 3.1)
14
+ activerecord (5.0.0.beta1)
15
+ activemodel (= 5.0.0.beta1)
16
+ activesupport (= 5.0.0.beta1)
17
+ arel (~> 7.0)
18
+ activesupport (5.0.0.beta1)
19
+ concurrent-ruby (~> 1.0)
20
+ i18n (~> 0.7)
21
+ json (~> 1.7, >= 1.7.7)
22
+ method_source
23
+ minitest (~> 5.1)
24
+ tzinfo (~> 1.1)
25
+ arel (7.0.0)
26
+ builder (3.2.2)
27
+ byebug (8.2.1)
28
+ codeclimate-test-reporter (0.4.8)
29
+ simplecov (>= 0.7.1, < 1.0.0)
30
+ concurrent-ruby (1.0.0)
31
+ diff-lcs (1.2.5)
32
+ docile (1.1.5)
33
+ i18n (0.7.0)
34
+ json (1.8.3)
35
+ method_source (0.8.2)
36
+ minitest (5.8.3)
37
+ rake (10.4.2)
38
+ rspec (3.4.0)
39
+ rspec-core (~> 3.4.0)
40
+ rspec-expectations (~> 3.4.0)
41
+ rspec-mocks (~> 3.4.0)
42
+ rspec-core (3.4.1)
43
+ rspec-support (~> 3.4.0)
44
+ rspec-expectations (3.4.0)
45
+ diff-lcs (>= 1.2.0, < 2.0)
46
+ rspec-support (~> 3.4.0)
47
+ rspec-mocks (3.4.0)
48
+ diff-lcs (>= 1.2.0, < 2.0)
49
+ rspec-support (~> 3.4.0)
50
+ rspec-support (3.4.1)
51
+ simplecov (0.11.1)
52
+ docile (~> 1.1.0)
53
+ json (~> 1.8)
54
+ simplecov-html (~> 0.10.0)
55
+ simplecov-html (0.10.0)
56
+ sqlite3 (1.3.11)
57
+ thread_safe (0.3.5)
58
+ tzinfo (1.2.2)
59
+ thread_safe (~> 0.1)
60
+
61
+ PLATFORMS
62
+ ruby
63
+
64
+ DEPENDENCIES
65
+ activerecord (= 5.0.0.beta1)
66
+ activerecord-jdbcsqlite3-adapter
67
+ activesupport (= 5.0.0.beta1)
68
+ byebug
69
+ codeclimate-test-reporter
70
+ order_query!
71
+ rake (~> 10.2)
72
+ rspec (~> 3.4)
73
+ sqlite3 (>= 1.3.11)
74
+
75
+ BUNDLED WITH
76
+ 1.11.2
@@ -92,14 +92,15 @@ describe 'OrderQuery' do
92
92
  end
93
93
  issues.shuffle.reverse_each(&:save!)
94
94
  expect(Issue.display_order.to_a).to eq(issues)
95
- issues.each_slice(2) do |prev, cur|
96
- cur ||= issues.first
97
- expect(prev.display_order.next).to eq(cur)
98
- expect(cur.display_order.previous).to eq(prev)
95
+ expect(Issue.display_order_reverse.to_a).to eq(issues.reverse)
96
+ issues.zip(issues.rotate).each_with_index do |(cur, nxt), i|
97
+ expect(cur.display_order.position).to eq(i + 1)
98
+ expect(cur.display_order.next).to eq(nxt)
99
+ expect(Issue.display_order_at(cur).next).to eq nxt
99
100
  expect(cur.display_order.space.count).to eq(Issue.count)
100
- expect(cur.display_order.before.count + 1 + cur.display_order.after.count).to eq(cur.display_order.count)
101
-
102
- expect(cur.display_order.before.to_a.reverse + [cur] + cur.display_order.after.to_a).to eq(Issue.display_order.to_a)
101
+ expect(cur.display_order.before.count + 1 + cur.display_order.after.count).to eq(nxt.display_order.count)
102
+ expect(nxt.display_order.previous).to eq(cur)
103
+ expect(nxt.display_order.before.to_a.reverse + [nxt] + nxt.display_order.after.to_a).to eq(Issue.display_order.to_a)
103
104
  end
104
105
  end
105
106
  end
@@ -122,8 +123,10 @@ describe 'OrderQuery' do
122
123
 
123
124
  it '.seek works on a list of ids' do
124
125
  ids = 3.times.map { create_issue.id }
125
- expect(Issue.seek([[:id, ids]]).scope.count).to eq ids.length
126
- expect(Issue.seek([:id, ids]).scope.count).to eq ids.length
126
+ expect(Issue.seek([[:id, ids]]).count).to eq ids.length
127
+ expect(Issue.seek([:id, ids]).count).to eq ids.length
128
+ expect(Issue.seek([:id, ids]).scope.pluck(:id)).to eq ids
129
+ expect(Issue.seek([:id, ids]).scope_reverse.pluck(:id)).to eq ids.reverse
127
130
  end
128
131
 
129
132
  context 'partitioned on a boolean flag' do
@@ -138,10 +141,12 @@ describe 'OrderQuery' do
138
141
  let!(:inactive) { Issue.where(active: false).seek(order) }
139
142
 
140
143
  it '.seek preserves scope' do
141
- expect(inactive.scope.count).to eq 1
142
144
  expect(inactive.count).to eq 1
145
+ expect(inactive.scope.count).to eq 1
146
+ expect(inactive.scope_reverse.count).to eq 1
143
147
  expect(active.count).to eq 2
144
148
  expect(active.scope.count).to eq 2
149
+ expect(active.scope_reverse.count).to eq 2
145
150
  end
146
151
 
147
152
  it 'gives a valid result if at argument is outside of the space' do
@@ -210,6 +215,30 @@ describe 'OrderQuery' do
210
215
  expect(o2.next(true)).to eq(p1)
211
216
  end
212
217
 
218
+ context '#inspect' do
219
+ it 'Column' do
220
+ expect(OrderQuery::Column.new([:id, :desc], Post).inspect).to eq '(id unique desc)'
221
+ expect(OrderQuery::Column.new([:virtual, :desc, sql: 'SIN(id)'], Post).inspect).to eq '(virtual SIN(id) desc)'
222
+ end
223
+
224
+ let(:space) {
225
+ OrderQuery::Space.new(Post, [[:pinned, [true, false]]])
226
+ }
227
+
228
+ it 'Point' do
229
+ post = create_post
230
+ point = OrderQuery::Point.new(post, space)
231
+ expect(point.inspect).to(
232
+ eq %Q(#<OrderQuery::Point @record=#<Post id: #{post.id}, pinned: false, published_at: #{post.attribute_for_inspect(:published_at)}> @space=#<OrderQuery::Space @columns=[(pinned [true, false] desc), (id unique asc)] @base_scope=Post(id: integer, pinned: boolean, published_at: datetime)>>)
233
+ )
234
+ end
235
+
236
+ it 'Space' do
237
+ expect(space.inspect).to eq '#<OrderQuery::Space @columns=[(pinned [true, false] desc), (id unique asc)] @base_scope=Post(id: integer, pinned: boolean, published_at: datetime)>'
238
+ end
239
+ end
240
+
241
+
213
242
  context 'boolean enum order' do
214
243
  before do
215
244
  create_post pinned: true
metadata CHANGED
@@ -1,57 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: order_query
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gleb Mazovetskiy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-15 00:00:00.000000000 Z
11
+ date: 2016-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '4.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '6.0'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '4.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '6.0'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: activesupport
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - "~>"
37
+ - - ">="
32
38
  - !ruby/object:Gem::Version
33
39
  version: '4.0'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '6.0'
34
43
  type: :runtime
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
38
- - - "~>"
47
+ - - ">="
39
48
  - !ruby/object:Gem::Version
40
49
  version: '4.0'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '6.0'
41
53
  - !ruby/object:Gem::Dependency
42
54
  name: rspec
43
55
  requirement: !ruby/object:Gem::Requirement
44
56
  requirements:
45
57
  - - "~>"
46
58
  - !ruby/object:Gem::Version
47
- version: '3.0'
59
+ version: '3.4'
48
60
  type: :development
49
61
  prerelease: false
50
62
  version_requirements: !ruby/object:Gem::Requirement
51
63
  requirements:
52
64
  - - "~>"
53
65
  - !ruby/object:Gem::Version
54
- version: '3.0'
66
+ version: '3.4'
55
67
  - !ruby/object:Gem::Dependency
56
68
  name: rake
57
69
  requirement: !ruby/object:Gem::Requirement
@@ -86,6 +98,10 @@ files:
86
98
  - lib/order_query/sql/order_by.rb
87
99
  - lib/order_query/sql/where.rb
88
100
  - lib/order_query/version.rb
101
+ - spec/gemfiles/rails_4.gemfile
102
+ - spec/gemfiles/rails_4.gemfile.lock
103
+ - spec/gemfiles/rails_5.gemfile
104
+ - spec/gemfiles/rails_5.gemfile.lock
89
105
  - spec/order_query_spec.rb
90
106
  - spec/spec_helper.rb
91
107
  homepage: https://github.com/glebm/order_query
@@ -109,10 +125,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
125
  version: '0'
110
126
  requirements: []
111
127
  rubyforge_project:
112
- rubygems_version: 2.4.1
128
+ rubygems_version: 2.5.1
113
129
  signing_key:
114
130
  specification_version: 4
115
131
  summary: Find next / previous Active Record(s) in one query
116
132
  test_files:
133
+ - spec/gemfiles/rails_4.gemfile
134
+ - spec/gemfiles/rails_4.gemfile.lock
135
+ - spec/gemfiles/rails_5.gemfile
136
+ - spec/gemfiles/rails_5.gemfile.lock
117
137
  - spec/order_query_spec.rb
118
138
  - spec/spec_helper.rb