클래스: Mongoid::Contextual::Mongo::DocumentsLoader Private
- 상속:
-
객체
- 객체
- Mongoid::Contextual::Mongo::DocumentsLoader
- 확장자:
- 전달 가능
- 다음을 포함합니다.
- 연관 관계::EagerLoadable
- 다음에 정의됨:
- lib/mongoid/contextual/mongo/documents_loader.rb
개요
이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
제공된 기준에 맞는 문서를 로드합니다.
인스턴스 속성 요약 접기
-
#criteria ⇒ Mongoid::Criteria
비공개
로드해야 하는 문서를 지정하는 기준입니다.
클래스 메서드 요약 접기
-
.실행기(이름 = Mongoid.async_query_executor) ⇒ Concurrent::ImmediateExecutor | Concurrent::ThreadPoolExecutor
비공개
Mongoid 구성 옵션에 따라 적합한 실행기를 반환합니다.
-
.global_thread_pool_async_query_executor ⇒ Concurrent::ThreadPoolExecutor
비공개
async_query_executor 구성 옵션이 :global_thread_pool로 설정하다 경우 사용할 비동기 실행기를 반환합니다.
-
.Immediate_executor ⇒ Concurrent::ImmediateExecutor
비공개
async_query_executor 구성 옵션이 :immediate로 설정하다 경우 사용할 동기 실행기를 반환합니다.
인스턴스 메서드 요약 접기
-
#실행 ⇒ Array<Mongoid::Document>
비공개
데이터베이스에서 '@criteria'로 지정된 레코드를 로드하고, 이를 '@klass' 유형의 Mongoid 문서로 변환합니다.
-
#initialize(view, klass, criteria, executor: self.class.executor) ⇒ DocumentsLoader
생성자
비공개
문서 로더 인스턴스 를 인스턴스화하고 제공된 실행기를 사용하여 즉시 실행을 예약합니다.
-
#보류 중인가요? ⇒ true | false
비공개
로더가 보류 상태 인지 여부에 관계없이 false 또는 true를 반환합니다.
-
#시작되었나요? ⇒ true | false
비공개
로더가 시작 상태 인지 여부에 관계없이 false 또는 true를 반환합니다.
-
#unschedule ⇒ 객체
비공개
로더를 예약되지 않음으로 표시합니다.
연관 관계::EagerLoadable에 포함된 메서드
#eager_load, #eager_loadable?, #preload
생성자 세부 정보
#initialize(view, klass, criteria, executor: self.class.executor) ⇒ DocumentsLoader
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
문서 로더 인스턴스 를 인스턴스화하고 제공된 실행기를 사용하여 즉시 실행을 예약합니다.
89 90 91 92 93 94 95 96 97 98 |
# 파일 'lib/mongoid/contextual/mongo/documents_loader.rb', 줄 89 def 초기화(보기, class, 기준, 실행기: self.클래스.실행기) @view = 보기 @klass = class @criteria = 기준 @mutex = 뮤텍스.신규 @ 상태 = :pending @future = Concurrent::Promises.future_on(실행기) do 시작하기 && 실행 end end |
인스턴스 속성 세부 정보
#criteria ⇒ Mongoid::Criteria
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
로드해야 하는 문서를 지정하는 기준을 반환합니다. 여기에 노출된 이유는 `Association::EagerLoadable`의 'eager_loadable?` 메서드가 이를 사용할 수 있을 것으로 예상하기 때문입니다.
75 76 77 |
# 파일 'lib/mongoid/contextual/mongo/documents_loader.rb', 줄 75 def 기준 @criteria end |
클래스 메서드 세부 정보
.실행기(이름 = Mongoid.async_query_executor) ⇒ Concurrent::ImmediateExecutor | Concurrent::ThreadPoolExecutor
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
Mongoid 구성 옵션에 따라 적합한 실행기를 반환합니다.
61 62 63 64 65 66 67 68 69 70 |
# 파일 'lib/mongoid/contextual/mongo/documents_loader.rb', 줄 61 def self.실행기(이름 = 몽고이드.async_query_executor) case 이름.to_sym when :immediate Immediate_executor when :global_thread_pool global_thread_pool_async_query_executor other 올리다 오류::InvalidQueryExecutor.신규(이름) end end |
.global_thread_pool_async_query_executor ⇒ Concurrent::ThreadPoolExecutor
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
async_query_executor 구성 옵션이 :global_thread_pool로 설정된 경우 사용할 비동기 실행기를 반환합니다. 이 실행기는 스레드 풀을 사용하여 백그라운드 스레드에서 작업을 실행합니다.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# 파일 'lib/mongoid/contextual/mongo/documents_loader.rb', 줄 32 def self.global_thread_pool_async_query_executor create_pool = Proc.신규 do |동시성| Concurrent::ThreadPoolExecutor.신규( min_threads: 0, max_threads: 동시성, max_queue: 동시성 * 4, fallback_policy: :caller_runs ) end 동시성 = 몽고이드.global_executor_concurrency || 4 @@global_thread_pool_async_query_executor ||= create_pool.전화하기.(동시성) 만약 @@global_thread_pool_async_query_executor.최대 길이 != 동시성 old_pool = @@global_thread_pool_async_query_executor @@global_thread_pool_async_query_executor = create_pool.전화하기.(동시성) old_pool.종료됩니다 end @@global_thread_pool_async_query_executor end |
.Immediate_executor ⇒ Concurrent::ImmediateExecutor
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
async_query_executor 구성 옵션이 :immediate로 설정하다 경우 사용할 동기 실행기를 반환합니다. 이 실행기는 현재 스레드에서 모든 작업을 실행하고 필요에 따라 차단합니다.
22 23 24 |
# 파일 'lib/mongoid/contextual/mongo/documents_loader.rb', 줄 22 def self.Immediate_executor @@immediate_executor ||= Concurrent::ImmediateExecutor.신규 end |
인스턴스 메서드 세부 정보
#실행 ⇒ Array<Mongoid::Document>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
데이터베이스에서 '@criteria'로 지정된 레코드를 로드하고, 이를 '@klass' 유형의 Mongoid 문서로 변환합니다.
이 메서드는 로더의 인스턴스 를 생성할 때 예약된 작업 (비동기 가능성도 있음)에 의해 호출됩니다. 그러나 호출자 스레드에서 로드를 즉시 실행하려는 경우 이 메서드를 직접 호출할 수 있습니다.
이 메서드를 호출해도 로더의 상태 는 변경되지 않습니다.
152 153 154 155 156 157 158 |
# 파일 'lib/mongoid/contextual/mongo/documents_loader.rb', 줄 152 def 실행 문서 = @view.map do |doc| 공장.from_db(@klass, doc, @criteria) end Eager_load(문서) 만약 Eager_loadable? 문서 end |
#보류 중인가요? ⇒ true | false
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
로더가 보류 상태 인지 여부에 관계없이 false 또는 true를 반환합니다.
보류 중 상태는 로더 실행이 예약되었지만 아직 시작되지 않았음을 의미합니다.
107 108 109 110 111 |
# 파일 'lib/mongoid/contextual/mongo/documents_loader.rb', 줄 107 def 보류 중? @mutex.동기화 do @ 상태 == :pending end end |
#시작되었나요? ⇒ true | false
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
로더가 시작 상태 인지 여부에 관계없이 false 또는 true를 반환합니다.
시작됨 상태 는 로더 실행이 시작되었음을 의미합니다. 실행이 완료된 후에도(성공 또는 실패) 로더는 이 상태 를 유지합니다.
121 122 123 124 125 |
# 파일 'lib/mongoid/contextual/mongo/documents_loader.rb', 줄 121 def 시작되었나요? @mutex.동기화 do @ 상태 == :started end end |
#unschedule ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
로더를 예약되지 않음으로 표시합니다.
로더가 예약되지 않은 것으로 표시되면 실행되지 않습니다. 문서를 로드할 수 있는 유일한 방법은 'execute' 메서드를 직접 호출하는 것입니다.
작업 실행이 이미 시작된 경우 예약을 취소해도 아무런 효과가 없습니다.
134 135 136 137 138 |
# 파일 'lib/mongoid/contextual/mongo/documents_loader.rb', 줄 134 def unschedule @mutex.동기화 do @ 상태 = :canceled 하지 않는 한 @ 상태 == :started end end |