Class: Mongoid::Contextual::Mongo
- Inherits:
-
Object
- Object
- Mongoid::Contextual::Mongo
- Defined in:
- lib/rocket_job/extensions/mongoid/contextual/mongo.rb,
lib/rocket_job/extensions/mongoid_5/contextual/mongo.rb
Instance Method Summary collapse
- #documents_for_iteration ⇒ Object
- #find_first ⇒ Object
-
#first ⇒ Object
Patches below add ‘criteria` as the last argument to `Factory.from_db`.
-
#initialize(criteria) ⇒ Mongo
constructor
A new instance of Mongo.
- #last ⇒ Object
- #yield_document(document) {|doc| ... } ⇒ Object
Constructor Details
#initialize(criteria) ⇒ Mongo
Returns a new instance of Mongo.
5 6 7 8 9 10 11 12 13 14 |
# File 'lib/rocket_job/extensions/mongoid/contextual/mongo.rb', line 5 def initialize(criteria) @criteria, @klass, @cache = criteria, criteria.klass, criteria.[:cache] # Only line changed is here, get collection name from criteria, not @klass #@collection = @klass.collection @collection = criteria.collection criteria.send(:merge_type_selection) @view = collection.find(criteria.selector, session: _session) end |
Instance Method Details
#documents_for_iteration ⇒ Object
49 50 51 52 53 54 |
# File 'lib/rocket_job/extensions/mongoid_5/contextual/mongo.rb', line 49 def documents_for_iteration return documents if cached? && !documents.empty? return view unless eager_loadable? docs = view.map{ |doc| Factory.from_db(klass, doc, criteria.[:fields], criteria) } eager_load(docs) end |
#find_first ⇒ Object
30 31 32 33 34 35 36 |
# File 'lib/rocket_job/extensions/mongoid_5/contextual/mongo.rb', line 30 def find_first return documents.first if cached? && cache_loaded? if raw_doc = view.first doc = Factory.from_db(klass, raw_doc, criteria.[:fields], criteria) eager_load([doc]).first end end |
#first ⇒ Object
Patches below add ‘criteria` as the last argument to `Factory.from_db`
20 21 22 23 24 25 26 27 28 |
# File 'lib/rocket_job/extensions/mongoid_5/contextual/mongo.rb', line 20 def first return documents.first if cached? && cache_loaded? try_cache(:first) do if raw_doc = view.limit(-1).first doc = Factory.from_db(klass, raw_doc, criteria.[:fields], criteria) eager_load([doc]).first end end end |
#last ⇒ Object
38 39 40 41 42 43 44 45 46 47 |
# File 'lib/rocket_job/extensions/mongoid_5/contextual/mongo.rb', line 38 def last try_cache(:last) do with_inverse_sorting do if raw_doc = view.limit(-1).first doc = Factory.from_db(klass, raw_doc, criteria.[:fields], criteria) eager_load([doc]).first end end end end |
#yield_document(document) {|doc| ... } ⇒ Object
56 57 58 59 60 61 |
# File 'lib/rocket_job/extensions/mongoid_5/contextual/mongo.rb', line 56 def yield_document(document, &block) doc = document.respond_to?(:_id) ? document : Factory.from_db(klass, document, criteria.[:fields], criteria) yield(doc) documents.push(doc) if cacheable? end |