mongo_batch 0.1.0 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9343db89a622725ac3532e5e7b16ff128b5d04b2
4
- data.tar.gz: 5a2a6233dbc88941e86f53659020a8d4d1d4d516
3
+ metadata.gz: 31cf19268cb6591963d37fee0f1c2f5f2d9f5ba5
4
+ data.tar.gz: d84b84401e4e0778d308d2d6c71f12715e926591
5
5
  SHA512:
6
- metadata.gz: 7fc6a20a065fe187c8980584c50dcaed5597b7ffae396c6c3d091249e7fe5ee6a38f7537005a8b0044c247f25477c996f9cc0f5b4543f70873c75d08c1d66b63
7
- data.tar.gz: 17ed373f8e1f0cf2cddf265e3604df9ea42c207da69169346c2eefed1e30781a7140278271a0585e04360c6acb7e1cef7d5173a4228676056ce55118bcc84de1
6
+ metadata.gz: ddac9a08616da8097c1a9573af2137d2a2b2d3c4a4715f68d7a94c7475a9dd7ab55c5c54bb52892461f73b0bd2699dd46b8a2232fc1ac01152eb884e68a924c4
7
+ data.tar.gz: 99c711457dae4a1a8368d7d500e691e51b5ef15038e9669e58c9081d58f5cdd2129c5bbdba105d7b3f2706c3b9727e3e68e6a29cb04967808a5ff6bff1f96b71
data/README.md CHANGED
@@ -2,8 +2,7 @@
2
2
 
3
3
  A Ruby library to run Mongoid queries on large collections in batches.
4
4
 
5
- **Supported Ruby versions:** 2.1, 2.2
6
-
5
+ **Supported Ruby versions:** 2.1, 2.2
7
6
  **Supported Mongoid versions:** 4.0, 5.0
8
7
 
9
8
  ## Installation
@@ -15,16 +15,24 @@ module MongoBatch
15
15
  processed_so_far = offset
16
16
 
17
17
  offset.step(by: batch_size, to: to - batch_size).each do |offset|
18
- yielder << query.order_by(order_by).limit(batch_size).skip(offset)
18
+ yielder << with_order.limit(batch_size).skip(offset)
19
19
  processed_so_far += batch_size
20
20
  end
21
21
 
22
22
  if processed_so_far < to
23
23
  last_limit = to - processed_so_far
24
- yielder << query.order(order_by).limit(last_limit).skip(processed_so_far)
24
+ yielder << with_order.limit(last_limit).skip(processed_so_far)
25
25
  end
26
26
  end
27
27
  end
28
+
29
+ def with_order
30
+ options.sort ? query : query.order_by(order_by)
31
+ end
32
+
33
+ def options
34
+ query.criteria.options
35
+ end
28
36
  end
29
37
 
30
38
  def self.in_batches(query, options = {})
@@ -8,6 +8,7 @@ describe MongoBatch do
8
8
  extend MongoBatch
9
9
 
10
10
  field :body, type: String
11
+ field :index, type: Integer
11
12
  end
12
13
 
13
14
  describe '#find_in_batches' do
@@ -85,6 +86,16 @@ describe MongoBatch do
85
86
  expect(ids).to eq(posts.map(&:id).reverse)
86
87
  end
87
88
 
89
+ it 'does not enforce an order if one is already applied' do
90
+ posts = 1.upto(10).map { |n| FactoryGirl.create(:post, index: n) }
91
+
92
+ posts_in_batches = described_class
93
+ .in_batches(Post.desc(:index), batch_size: 5)
94
+ .map(&:to_a)
95
+
96
+ expect(posts_in_batches).to eq([posts[5..9].reverse, posts[0..4].reverse])
97
+ end
98
+
88
99
  it 'preserves any scopes previously applied' do
89
100
  posts = FactoryGirl.create_list(:post, 5, body: 'Hello world!')
90
101
  FactoryGirl.create_list(:post, 1)
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongo_batch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oliver Martell
8
+ - Matthew MacLeod
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-11-09 00:00:00.000000000 Z
12
+ date: 2016-02-26 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
@@ -58,14 +59,14 @@ dependencies:
58
59
  requirements:
59
60
  - - "~>"
60
61
  - !ruby/object:Gem::Version
61
- version: '4.0'
62
+ version: '5.0'
62
63
  type: :development
63
64
  prerelease: false
64
65
  version_requirements: !ruby/object:Gem::Requirement
65
66
  requirements:
66
67
  - - "~>"
67
68
  - !ruby/object:Gem::Version
68
- version: '4.0'
69
+ version: '5.0'
69
70
  - !ruby/object:Gem::Dependency
70
71
  name: database_cleaner
71
72
  requirement: !ruby/object:Gem::Requirement
@@ -128,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
129
  version: '0'
129
130
  requirements: []
130
131
  rubyforge_project:
131
- rubygems_version: 2.4.5
132
+ rubygems_version: 2.5.1
132
133
  signing_key:
133
134
  specification_version: 4
134
135
  summary: A library to batch Mongo queries