mongoid-scroll 0.3.3 → 0.3.4

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: b5794d16e2c38712a9f48c0b440f4857427be442
4
- data.tar.gz: 6ea3d2d75bcfddad5a48cb9ccdc375d2b4e7d78f
3
+ metadata.gz: 022e561816d188ff5a1d3e6af69004107ad165bf
4
+ data.tar.gz: 6d50c0f44d7e8ad830b0d381c4791f96425ef7cf
5
5
  SHA512:
6
- metadata.gz: 9bbae48e28692ccb74b0831c32f1abbdc2944526960172affac2d6913b73167d8d9009b587bbf1d80abd05d89390f5765c2c91b638f2b94fd8780c63b7d4eec2
7
- data.tar.gz: 45dc05f2cffceb0b26cd4d25bfc01d22d820b2893af5b395669ba1c823eefd79e42146bb0bf27787b3543c7cba3b9879bbb62e80bf7ae8a6579363d216b1fd2f
6
+ metadata.gz: 9f6faa3ae039517af97d415c096af31409203d88c563ec6169b05d9ac91e7fa56f783e6b7ad7de64454829bb0e824e96c71fedc558bbfb9b7b7be64cdf1b392f
7
+ data.tar.gz: 511e661677f4ccc5e3dce89e178a72f2aa90cb3fb6c09bd4177b444493cd6f9fd61d0104498161e8f266b3ffe0bbcfb3eb09260d868eec43f351754a41883e98
data/.rubocop_todo.yml CHANGED
@@ -1,37 +1,38 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2015-08-08 11:38:01 -0400 using RuboCop version 0.33.0.
3
+ # on 2015-10-22 08:27:54 -0400 using RuboCop version 0.33.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 5
9
+ # Offense count: 6
10
10
  Metrics/AbcSize:
11
11
  Max: 70
12
12
 
13
- # Offense count: 5
13
+ # Offense count: 6
14
14
  Metrics/CyclomaticComplexity:
15
15
  Max: 11
16
16
 
17
- # Offense count: 83
17
+ # Offense count: 107
18
18
  # Configuration parameters: AllowURI, URISchemes.
19
19
  Metrics/LineLength:
20
20
  Max: 170
21
21
 
22
- # Offense count: 4
22
+ # Offense count: 5
23
23
  # Configuration parameters: CountComments.
24
24
  Metrics/MethodLength:
25
- Max: 26
25
+ Max: 25
26
26
 
27
- # Offense count: 3
27
+ # Offense count: 4
28
28
  Metrics/PerceivedComplexity:
29
- Max: 12
29
+ Max: 11
30
30
 
31
31
  # Offense count: 13
32
32
  Style/Documentation:
33
33
  Exclude:
34
34
  - 'examples/mongoid_scroll_feed.rb'
35
+ - 'lib/mongo/scrollable.rb'
35
36
  - 'lib/mongoid/criterion/scrollable.rb'
36
37
  - 'lib/mongoid/scroll/cursor.rb'
37
38
  - 'lib/mongoid/scroll/errors/base.rb'
@@ -39,7 +40,6 @@ Style/Documentation:
39
40
  - 'lib/mongoid/scroll/errors/multiple_sort_fields_error.rb'
40
41
  - 'lib/mongoid/scroll/errors/no_such_field_error.rb'
41
42
  - 'lib/mongoid/scroll/errors/unsupported_field_type_error.rb'
42
- - 'lib/mongoid/scroll/mongoid.rb'
43
43
  - 'lib/mongoid/scroll/version.rb'
44
44
  - 'lib/moped/scrollable.rb'
45
45
  - 'spec/support/feed/embedded_item.rb'
@@ -51,7 +51,7 @@ Style/FileName:
51
51
  Exclude:
52
52
  - 'lib/mongoid-scroll.rb'
53
53
 
54
- # Offense count: 6
54
+ # Offense count: 7
55
55
  # Configuration parameters: SupportedStyles.
56
56
  Style/RaiseArgs:
57
57
  EnforcedStyle: compact
data/CHANGELOG.md CHANGED
@@ -1,7 +1,12 @@
1
+ 0.3.4 (2015/10/22)
2
+ ------------------
3
+
4
+ * Added support for [mongo-ruby-driver](https://github.com/mongodb/mongo-ruby-driver), `Mongo::Collection::View`- [@dblock](https://github.com/dblock).
5
+
1
6
  0.3.3 (2015/09/17)
2
7
  ------------------
3
8
 
4
- * Officially compatible with Mongoid 5 - [@dblock](https://github.com/dblock).
9
+ * Compatibility with Mongoid 5 - [@dblock](https://github.com/dblock).
5
10
 
6
11
  0.3.2 (2015/8/8)
7
12
  ----------------
data/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2012 Daniel Doubrovkine, Artsy Inc.
3
+ Copyright (c) 2013-2015 Daniel Doubrovkine, Artsy Inc.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -12,7 +12,7 @@ Mongoid extension that enables infinite scrolling for `Mongoid::Criteria` and `M
12
12
  Compatibility
13
13
  -------------
14
14
 
15
- This gem supports Mongoid 3, 4 and 5.
15
+ This gem supports Mongoid 3, 4 and 5, Moped and Mongo-Ruby-Driver.
16
16
 
17
17
  Demo
18
18
  ----
@@ -85,9 +85,9 @@ Feed::Item.desc(:position).scroll(saved_cursor) do |record, next_cursor|
85
85
  end
86
86
  ```
87
87
 
88
- ### Moped
88
+ ### Moped (Mongoid 3 and 4)
89
89
 
90
- Scroll and save a cursor to the last item. You must also supply a `field_type` of the sort criteria.
90
+ Scroll a `Moped::Query` and save a cursor to the last item. You must also supply a `field_type` of the sort criteria.
91
91
 
92
92
  ```ruby
93
93
  saved_cursor = nil
@@ -106,6 +106,27 @@ session[:feed_items].find.sort(position: -1).limit(5).scroll(saved_cursor, { fie
106
106
  end
107
107
  ```
108
108
 
109
+ ### Mongo-Ruby-Driver (Mongoid 5)
110
+
111
+ Scroll a `Mongo::Collection::View` and save a cursor to the last item. You must also supply a `field_type` of the sort criteria.
112
+
113
+ ```ruby
114
+ saved_cursor = nil
115
+ client[:feed_items].find.sort(position: -1).limit(5).scroll(nil, { field_type: DateTime }) do |record, next_cursor|
116
+ # each record, one-by-one
117
+ saved_cursor = next_cursor
118
+ end
119
+ ```
120
+
121
+ Resume iterating using the previously saved cursor.
122
+
123
+ ```ruby
124
+ session[:feed_items].find.sort(position: -1).limit(5).scroll(saved_cursor, { field_type: DateTime }) do |record, next_cursor|
125
+ # each record, one-by-one
126
+ saved_cursor = next_cursor
127
+ end
128
+ ```
129
+
109
130
  Indexes and Performance
110
131
  -----------------------
111
132
 
@@ -166,4 +187,4 @@ Copyright and License
166
187
 
167
188
  MIT License, see [LICENSE](http://github.com/dblock/mongoid-scroll/raw/master/LICENSE.md) for details.
168
189
 
169
- (c) 2013 [Daniel Doubrovkine](http://github.com/dblock), based on code by [Frank Macreery](http://github.com/macreery), [Artsy Inc.](http://artsy.net)
190
+ (c) 2013-2015 [Daniel Doubrovkine](http://github.com/dblock), based on code by [Frank Macreery](http://github.com/macreery), [Artsy Inc.](http://artsy.net)
@@ -0,0 +1,45 @@
1
+ require 'bundler'
2
+ Bundler.setup(:default, :development)
3
+
4
+ require 'mongoid-scroll'
5
+ require 'faker'
6
+
7
+ fail 'No Mongo Ruby Driver' unless Object.const_defined?(:Mongo)
8
+
9
+ Mongo::Logger.logger = Logger.new($stdout)
10
+ Mongo::Logger.logger.level = Logger::INFO
11
+
12
+ Mongoid.connect_to 'mongoid_scroll_demo'
13
+ Mongoid.purge!
14
+
15
+ # total items to insert
16
+ total_items = 20
17
+ # a MongoDB query will be executed every scroll_by items
18
+ scroll_by = 7
19
+
20
+ # insert items with a position out-of-order
21
+ rands = (0..total_items).to_a.sort { rand }[0..total_items]
22
+ total_items.times do
23
+ Mongoid.default_client['feed_items'].insert_one(title: Faker::Lorem.sentence, position: rands.pop)
24
+ end
25
+
26
+ Mongoid.default_client['feed_items'].indexes.create_one(position: 1, _id: 1)
27
+
28
+ total_shown = 0
29
+ next_cursor = nil
30
+ loop do
31
+ current_cursor = next_cursor
32
+ next_cursor = nil
33
+ Mongoid.default_client['feed_items'].find.limit(scroll_by).sort(position: 1).scroll(current_cursor, field_type: Integer, field_name: 'position') do |item, cursor|
34
+ puts "#{item['position']}: #{item['title']}"
35
+ next_cursor = cursor
36
+ total_shown += 1
37
+ end
38
+ break unless next_cursor
39
+ # destroy an item just for the heck of it, scroll is not affected
40
+ item = Mongoid.default_client['feed_items'].find.sort(position: 1).first
41
+ Mongoid.default_client['feed_items'].find(_id: item['_id']).delete_one
42
+ end
43
+
44
+ # this will be 20
45
+ puts "Shown #{total_shown} items."
@@ -4,6 +4,14 @@ Bundler.setup(:default, :development)
4
4
  require 'mongoid-scroll'
5
5
  require 'faker'
6
6
 
7
+ if defined?(Moped)
8
+ Moped.logger = Logger.new($stdout)
9
+ Moped.logger.level = Logger::DEBUG
10
+ else
11
+ Mongoid.logger.level = Logger::INFO
12
+ Mongo::Logger.logger.level = Logger::INFO if Mongoid::Compatibility::Version.mongoid5?
13
+ end
14
+
7
15
  Mongoid.connect_to 'mongoid_scroll_demo'
8
16
  Mongoid.purge!
9
17
 
@@ -27,9 +35,6 @@ total_items.times do |_i|
27
35
  Feed::Item.create! title: Faker::Lorem.sentence, position: rands.pop
28
36
  end
29
37
 
30
- Moped.logger = Logger.new($stdout)
31
- Moped.logger.level = Logger::DEBUG
32
-
33
38
  Feed::Item.create_indexes
34
39
 
35
40
  total_shown = 0
@@ -7,6 +7,8 @@ require 'faker'
7
7
  Mongoid.connect_to 'mongoid_scroll_demo'
8
8
  Mongoid.purge!
9
9
 
10
+ fail 'No Moped' unless Object.const_defined?(:Moped)
11
+
10
12
  # total items to insert
11
13
  total_items = 20
12
14
  # a MongoDB query will be executed every scroll_by items
@@ -0,0 +1,33 @@
1
+ module Mongo
2
+ module Scrollable
3
+ def scroll(cursor = nil, options = nil, &_block)
4
+ view = self
5
+ # we don't support scrolling over a view with multiple fields
6
+ fail Mongoid::Scroll::Errors::MultipleSortFieldsError.new(sort: view.sort) if view.sort && view.sort.keys.size != 1
7
+ # scroll field and direction
8
+ scroll_field = view.sort ? view.sort.keys.first : :_id
9
+ scroll_direction = view.sort ? view.sort.values.first.to_i : 1
10
+ # scroll cursor from the parameter, with value and tiebreak_id
11
+ options = { field_type: BSON::ObjectId } unless options
12
+ cursor_options = { field_name: scroll_field, direction: scroll_direction }.merge(options)
13
+ cursor = cursor.is_a?(Mongoid::Scroll::Cursor) ? cursor : Mongoid::Scroll::Cursor.new(cursor, cursor_options)
14
+ # make a view
15
+ view = Mongo::Collection::View.new(
16
+ view.collection,
17
+ view.selector.merge(cursor.criteria),
18
+ sort: (view.sort || {}).merge(_id: scroll_direction),
19
+ skip: skip,
20
+ limit: limit)
21
+ # scroll
22
+ if block_given?
23
+ view.each do |record|
24
+ yield record, Mongoid::Scroll::Cursor.from_record(record, cursor_options)
25
+ end
26
+ else
27
+ view
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ Mongo::Collection::View.send(:include, Mongo::Scrollable)
@@ -3,13 +3,10 @@ require 'i18n'
3
3
  I18n.load_path << File.join(File.dirname(__FILE__), 'config', 'locales', 'en.yml')
4
4
 
5
5
  require 'mongoid'
6
+ require 'mongoid-compatibility'
6
7
  require 'mongoid/scroll/version'
7
- require 'mongoid/scroll/mongoid'
8
8
  require 'mongoid/scroll/errors'
9
9
  require 'mongoid/scroll/cursor'
10
-
11
10
  require 'moped/scrollable' if Object.const_defined?(:Moped)
11
+ require 'mongo/scrollable' if Object.const_defined?(:Mongo)
12
12
  require 'mongoid/criterion/scrollable'
13
-
14
- Moped::Query.send(:include, Moped::Scrollable) if Object.const_defined?(:Moped)
15
- Mongoid::Criteria.send(:include, Mongoid::Criterion::Scrollable)
@@ -31,3 +31,5 @@ module Mongoid
31
31
  end
32
32
  end
33
33
  end
34
+
35
+ Mongoid::Criteria.send(:include, Mongoid::Criterion::Scrollable)
@@ -44,7 +44,7 @@ module Mongoid
44
44
  id = parts[-1]
45
45
  value = parts[0...-1].join(':')
46
46
  @value = Mongoid::Scroll::Cursor.parse_field_value(field_type, field_name, value)
47
- if Mongoid::Scroll.mongoid3?
47
+ if Mongoid::Compatibility::Version.mongoid3?
48
48
  @tiebreak_id = Moped::BSON::ObjectId(id)
49
49
  else
50
50
  @tiebreak_id = BSON::ObjectId.from_string(id)
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module Scroll
3
- VERSION = '0.3.3'
3
+ VERSION = '0.3.4'
4
4
  end
5
5
  end
@@ -1,11 +1,10 @@
1
1
  module Moped
2
2
  module Scrollable
3
3
  def scroll(cursor = nil, options = nil, &_block)
4
- options = if Mongoid::Scroll.mongoid3?
5
- { field_type: Moped::BSON::ObjectId }
6
- else
7
- { field_type: BSON::ObjectId }
8
- end unless options
4
+ unless options
5
+ bson_type = Mongoid::Compatibility::Version.mongoid3? ? Moped::BSON::ObjectId : BSON::ObjectId
6
+ options = { field_type: bson_type }
7
+ end
9
8
  query = Query.new(collection, operation.selector.dup)
10
9
  query.operation.skip = operation.skip
11
10
  query.operation.limit = operation.limit
@@ -35,3 +34,5 @@ module Moped
35
34
  end
36
35
  end
37
36
  end
37
+
38
+ Moped::Query.send(:include, Moped::Scrollable)
@@ -14,5 +14,6 @@ Gem::Specification.new do |s|
14
14
  s.licenses = ['MIT']
15
15
  s.summary = 'Mongoid extensions to enable infinite scroll.'
16
16
  s.add_dependency 'mongoid', '>= 3.0'
17
+ s.add_dependency 'mongoid-compatibility'
17
18
  s.add_dependency 'i18n'
18
19
  end
@@ -0,0 +1,124 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mongo::Collection::View do
4
+ context 'scrollable' do
5
+ subject do
6
+ Mongoid.default_client['feed_items'].find
7
+ end
8
+ it ':scroll' do
9
+ expect(subject).to respond_to(:scroll)
10
+ end
11
+ end
12
+ context 'with multiple sort fields' do
13
+ subject do
14
+ Mongoid.default_client['feed_items'].find.sort(name: 1, value: -1)
15
+ end
16
+ it 'raises Mongoid::Scroll::Errors::MultipleSortFieldsError' do
17
+ expect { subject.scroll }.to raise_error Mongoid::Scroll::Errors::MultipleSortFieldsError,
18
+ /You're attempting to scroll over data with a sort order that includes multiple fields: name, value./
19
+ end
20
+ end
21
+ context 'with no sort' do
22
+ subject do
23
+ Mongoid.default_client['feed_items'].find
24
+ end
25
+ it 'adds a default sort by _id' do
26
+ expect(subject.scroll.sort).to eq('_id' => 1)
27
+ end
28
+ end
29
+ context 'with data' do
30
+ before :each do
31
+ 10.times do |i|
32
+ Mongoid.default_client['feed_items'].insert_one(
33
+ a_string: i.to_s,
34
+ a_integer: i,
35
+ a_datetime: DateTime.mongoize(DateTime.new(2013, i + 1, 21, 1, 42, 3, 'UTC')),
36
+ a_date: Date.mongoize(Date.new(2013, i + 1, 21)),
37
+ a_time: Time.mongoize(Time.at(Time.now.to_i + i))
38
+ )
39
+ end
40
+ end
41
+ context 'default' do
42
+ it 'scrolls all' do
43
+ records = []
44
+ Mongoid.default_client['feed_items'].find.scroll do |record, _next_cursor|
45
+ records << record
46
+ end
47
+ expect(records.size).to eq 10
48
+ expect(records).to eq Mongoid.default_client['feed_items'].find.to_a
49
+ end
50
+ end
51
+ { a_string: String, a_integer: Integer, a_date: Date, a_datetime: DateTime }.each_pair do |field_name, field_type|
52
+ context field_type do
53
+ it 'scrolls all with a block' do
54
+ records = []
55
+ Mongoid.default_client['feed_items'].find.sort(field_name => 1).scroll(nil, field_type: field_type) do |record, _next_cursor|
56
+ records << record
57
+ end
58
+ expect(records.size).to eq 10
59
+ expect(records).to eq Mongoid.default_client['feed_items'].find.to_a
60
+ end
61
+ it 'scrolls all with a break' do
62
+ records = []
63
+ cursor = nil
64
+ Mongoid.default_client['feed_items'].find.sort(field_name => 1).limit(5).scroll(nil, field_type: field_type) do |record, next_cursor|
65
+ records << record
66
+ cursor = next_cursor
67
+ end
68
+ expect(records.size).to eq 5
69
+ Mongoid.default_client['feed_items'].find.sort(field_name => 1).scroll(cursor, field_type: field_type) do |record, next_cursor|
70
+ records << record
71
+ cursor = next_cursor
72
+ end
73
+ expect(records.size).to eq 10
74
+ expect(records).to eq Mongoid.default_client['feed_items'].find.to_a
75
+ end
76
+ it 'scrolls in descending order' do
77
+ records = []
78
+ Mongoid.default_client['feed_items'].find.sort(field_name => -1).limit(3).scroll(nil, field_type: field_type, field_name: field_name) do |record, _next_cursor|
79
+ records << record
80
+ end
81
+ expect(records.size).to eq 3
82
+ expect(records).to eq Mongoid.default_client['feed_items'].find.sort(field_name => -1).limit(3).to_a
83
+ end
84
+ it 'map' do
85
+ record = Mongoid.default_client['feed_items'].find.limit(3).scroll(nil, field_type: field_type, field_name: field_name).map { |r| r }.last
86
+ cursor = Mongoid::Scroll::Cursor.from_record(record, field_type: field_type, field_name: field_name)
87
+ expect(cursor).to_not be nil
88
+ expect(cursor.to_s.split(':')).to eq [
89
+ Mongoid::Scroll::Cursor.transform_field_value(field_type, field_name, record[field_name.to_s]).to_s,
90
+ record['_id'].to_s
91
+ ]
92
+ end
93
+ end
94
+ end
95
+ end
96
+ context 'with overlapping data' do
97
+ before :each do
98
+ 3.times { Feed::Item.create! a_integer: 5 }
99
+ Feed::Item.first.update_attributes!(name: Array(1000).join('a'))
100
+ end
101
+ it 'natural order is different from order by id' do
102
+ # natural order isn't necessarily going to be the same as _id order
103
+ # if a document is updated and grows in size, it may need to be relocated and
104
+ # thus cause the natural order to change
105
+ expect(Feed::Item.order_by('$natural' => 1).to_a).to_not eq Feed::Item.order_by(_id: 1).to_a
106
+ end
107
+ [{ a_integer: 1 }, { a_integer: -1 }].each do |sort_order|
108
+ it "scrolls by #{sort_order}" do
109
+ records = []
110
+ cursor = nil
111
+ Mongoid.default_client['feed_items'].find.sort(sort_order).limit(2).scroll do |record, next_cursor|
112
+ records << record
113
+ cursor = next_cursor
114
+ end
115
+ expect(records.size).to eq 2
116
+ Mongoid.default_client['feed_items'].find.sort(sort_order).scroll(cursor) do |record, _next_cursor|
117
+ records << record
118
+ end
119
+ expect(records.size).to eq 3
120
+ expect(records).to eq Mongoid.default_client['feed_items'].find.sort(sort_order.merge(_id: sort_order[:a_integer])).to_a
121
+ end
122
+ end
123
+ end
124
+ end if Object.const_defined?(:Mongo)
@@ -134,7 +134,7 @@ describe Mongoid::Criteria do
134
134
  criteria = Feed::Item.where(:a_time.gt => Time.new(2013, 7, 22, 1, 2, 3))
135
135
  feed_item_1 = Feed::Item.where(name: 'Feed Item 1').first
136
136
  cursor_input = "#{feed_item_1.id}:#{feed_item_1.id}"
137
- field_type = Mongoid::Scroll.mongoid3? ? Moped::BSON::ObjectId : BSON::ObjectId
137
+ field_type = Mongoid::Compatibility::Version.mongoid3? ? Moped::BSON::ObjectId : BSON::ObjectId
138
138
  cursor_options = { field_type: field_type, field_name: '_id', direction: 1 }
139
139
  cursor = Mongoid::Scroll::Cursor.new(cursor_input, cursor_options)
140
140
  records = []
@@ -17,14 +17,14 @@ describe Mongoid::Scroll::Cursor do
17
17
  end
18
18
  context 'an id field cursor' do
19
19
  let(:feed_item) { Feed::Item.create!(a_string: 'astring') }
20
- field_type = Mongoid::Scroll.mongoid3? ? Moped::BSON::ObjectId : BSON::ObjectId
20
+ field_type = Mongoid::Compatibility::Version.mongoid3? ? Moped::BSON::ObjectId : BSON::ObjectId
21
21
  subject do
22
22
  Mongoid::Scroll::Cursor.new "#{feed_item.id}:#{feed_item.id}", field_name: '_id', field_type: field_type, direction: 1
23
23
  end
24
24
  its(:value) { should eq feed_item.id.to_s }
25
25
  its(:tiebreak_id) { should eq feed_item.id }
26
26
  its(:criteria) do
27
- if Mongoid::Scroll.mongoid3?
27
+ if Mongoid::Compatibility::Version.mongoid3?
28
28
  should eq('$or' => [
29
29
  { '_id' => { '$gt' => Moped::BSON::ObjectId("#{feed_item.id}") } }
30
30
  ])
@@ -117,7 +117,7 @@ describe Moped::Query do
117
117
  records << record
118
118
  end
119
119
  expect(records.size).to eq 3
120
- expect(records).to eq Mongoid.default_session['feed_items'].find.sort(_id: sort_order[:a_integer]).to_a
120
+ expect(records).to eq Mongoid.default_session['feed_items'].find.sort(sort_order.merge(_id: sort_order[:a_integer])).to_a
121
121
  end
122
122
  end
123
123
  end
data/spec/spec_helper.rb CHANGED
@@ -15,6 +15,10 @@ Mongoid.configure do |config|
15
15
  end
16
16
 
17
17
  RSpec.configure do |config|
18
+ config.before :all do
19
+ Mongoid.logger.level = Logger::INFO
20
+ Mongo::Logger.logger.level = Logger::INFO if Mongoid::Compatibility::Version.mongoid5?
21
+ end
18
22
  config.before :each do
19
23
  Mongoid.purge!
20
24
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-scroll
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Doubrovkine
@@ -9,34 +9,48 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-09-17 00:00:00.000000000 Z
12
+ date: 2015-10-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mongoid
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - '>='
19
19
  - !ruby/object:Gem::Version
20
20
  version: '3.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - '>='
26
26
  - !ruby/object:Gem::Version
27
27
  version: '3.0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: mongoid-compatibility
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: i18n
30
44
  requirement: !ruby/object:Gem::Requirement
31
45
  requirements:
32
- - - ">="
46
+ - - '>='
33
47
  - !ruby/object:Gem::Version
34
48
  version: '0'
35
49
  type: :runtime
36
50
  prerelease: false
37
51
  version_requirements: !ruby/object:Gem::Requirement
38
52
  requirements:
39
- - - ">="
53
+ - - '>='
40
54
  - !ruby/object:Gem::Version
41
55
  version: '0'
42
56
  description:
@@ -45,20 +59,22 @@ executables: []
45
59
  extensions: []
46
60
  extra_rdoc_files: []
47
61
  files:
48
- - ".gitignore"
49
- - ".rspec"
50
- - ".rubocop.yml"
51
- - ".rubocop_todo.yml"
52
- - ".travis.yml"
62
+ - .gitignore
63
+ - .rspec
64
+ - .rubocop.yml
65
+ - .rubocop_todo.yml
66
+ - .travis.yml
53
67
  - CHANGELOG.md
54
68
  - Gemfile
55
69
  - LICENSE.md
56
70
  - README.md
57
71
  - RELEASING.md
58
72
  - Rakefile
73
+ - examples/mongo_ruby_driver_scroll_feed.rb
59
74
  - examples/mongoid_scroll_feed.rb
60
75
  - examples/moped_scroll_feed.rb
61
76
  - lib/config/locales/en.yml
77
+ - lib/mongo/scrollable.rb
62
78
  - lib/mongoid-scroll.rb
63
79
  - lib/mongoid/criterion/scrollable.rb
64
80
  - lib/mongoid/scroll/cursor.rb
@@ -68,11 +84,11 @@ files:
68
84
  - lib/mongoid/scroll/errors/multiple_sort_fields_error.rb
69
85
  - lib/mongoid/scroll/errors/no_such_field_error.rb
70
86
  - lib/mongoid/scroll/errors/unsupported_field_type_error.rb
71
- - lib/mongoid/scroll/mongoid.rb
72
87
  - lib/mongoid/scroll/version.rb
73
88
  - lib/mongoid_scroll.rb
74
89
  - lib/moped/scrollable.rb
75
90
  - mongoid-scroll.gemspec
91
+ - spec/mongo/collection_view_spec.rb
76
92
  - spec/mongoid/criteria_spec.rb
77
93
  - spec/mongoid/scroll_cursor_spec.rb
78
94
  - spec/mongoid/scroll_spec.rb
@@ -90,17 +106,17 @@ require_paths:
90
106
  - lib
91
107
  required_ruby_version: !ruby/object:Gem::Requirement
92
108
  requirements:
93
- - - ">="
109
+ - - '>='
94
110
  - !ruby/object:Gem::Version
95
111
  version: '0'
96
112
  required_rubygems_version: !ruby/object:Gem::Requirement
97
113
  requirements:
98
- - - ">="
114
+ - - '>='
99
115
  - !ruby/object:Gem::Version
100
116
  version: 1.3.6
101
117
  requirements: []
102
118
  rubyforge_project:
103
- rubygems_version: 2.2.2
119
+ rubygems_version: 2.4.5
104
120
  signing_key:
105
121
  specification_version: 4
106
122
  summary: Mongoid extensions to enable infinite scroll.
@@ -1,7 +0,0 @@
1
- module Mongoid
2
- module Scroll
3
- def self.mongoid3?
4
- Mongoid::VERSION =~ /^3\./
5
- end
6
- end
7
- end